Как заархивировать определенный тип файла в каталоге

Как заархивировать определенный тип файла в каталоге

У меня есть три вида файлов в каталоге, например.текст,.csvи файлы без расширений.

Пример

test
nest
prod
test.csv
prod.txt
nest.csv

Я хочу заархивировать файлы без расширения и переместить этот zip в другой каталог. Пожалуйста, помогите мне решить эту проблему

решение1

С использованиемсмолаполезность:

tar -cvf noext.zip --exclude=*.* * && mv noext.zip path/to/dest_dir

  • -c- создать новый архив

  • --exclude=*.*- исключить файлы на основеШАБЛОН

  • mv noext.zip path/to/dest_dir- переместить созданный архив вместо назначениякаталог

решение2

Вы можете использовать findс условием инвертирования в -nameполе с шаблоном glob, который соответствует именам, содержащим символ точки, как показано ниже.

find . -type f ! -name "*.*" -exec zip filename.zip "{}" + 
[ -f filename.zip ] && mv filename.zip /to_whatever_path_needed/

Выражение получает все файлынетимеющие .в своем имени символ и передающие его в архив ZIP-архиву для создания .zipархива.

Возможно, вам придется добавить параметры глубины, findесли -mindepth 1 -maxdepth 1вы хотите найти файлы.тольков вашем текущем каталоге.

решение3

В кш:

zip /another/directory/files_without_extension.zip !(*.*)

В bash выполните shopt -s extglobкоманду выше. В zsh выполните setopt ksh_globкоманду выше или альтернативно

setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*

Связанный контент