
次のようなディレクトリに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 ^*.*