ディレクトリ内の特定の種類のファイルを圧縮する方法

ディレクトリ内の特定の種類のファイルを圧縮する方法

次のようなディレクトリに3種類のファイルがあります。TXT.csv拡張子のないファイル。

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

拡張子のないファイルを圧縮して、その圧縮ファイルを別のディレクトリに移動したいのですが、解決方法を教えていただけますか?

答え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

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

kshの場合:

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 ^*.*

関連情報