У мене є кілька каталогів із різною кількістю файлів та підкаталогів. Усі файли, що не мають розширень, мають бути tarвідредаговані. Їх імена можуть змінюватися, тому їх неможливо жорстко закодувати. Підкаталоги також можуть містити не визначене число файлів і підкаталогів, які не мають значення і не повинні включатися до архіву.
Мені б хотілося це зробити за допомогою одного рядка, не використовуючи жодних .shсценаріїв, щоб цей процес міг бути відтворений як можна більш портативно.
Приклад структури каталогів:
$ ls -1F
bar-dir/
bar.with.dots
foo-directory/
foo-no-ext
quux.dir/
quux.ext
Отримане tarмає містити лише foo-no-extв цьому випадку.
Найближчий, з яким я придумав цей далекий, - це
tar -cf archive.tar --exclude=*.* --no-recursion *
Але, виконуючись на наборі зразків, archive.tarвсе ще включає підкаталоги (навіть незважаючи на порожні):
$ tar -tf archive.tar
bar-dir/
foo-directory/
foo-no-ext
bashабоperlабсолютно однакова у всіх системах, хочаtarможе бути GNU, BSD, Solaris tar ...