
У меня есть три вида файлов в каталоге, например.текст,.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 ^*.*