Ви можете зробити це, щоб надати 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 і, таким чином, включають код пошуку.