Ви можете зробити це, щоб надати tarсписок усіх файлів всередині, protTestsкрім тих, що є посиланнями:
find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
tar --null --files-from - -cvf protTests.tar
До речі, ваша існуюча команда:
tar -cvf protTests.tar protTests/*
не буде архівувати всі файли в protTests, він буде архівувати лише ті, імена яких не починаються з .(ті, що не приховано). *Оператор Глоб пропускає файли, імена яких починаються з .дизайном. У команди також є проблема, що якщо protTestsє багато файлів (більше багатьох тисяч), то protTests/*можна розширити на занадто багато аргументів, щоб поміститися в командному рядку.
Простіша така команда не мала б жодної з цих проблем:
tar -cvf protTests.tar protTests
--files-from, це варіант від gtar, тому ви даєте таку пораду, краще зазначайте, що це специфічно для gtar. Знайти не має первинного-not, це ще один не портативний GNUism. Загалом, погана ідея використовувати окремий виклик пошуку. Це може спричинити проблеми зі смішними символами в імені файлу, і це, безумовно, дає низьку продуктивність, оскільки і пошук, і tar потрібно сканувати файлову систему. Ці проблеми не поширюються на такі програми, як зірка, які використовують libfind і, таким чином, включають код пошуку.