Linux Centos 7.6で、ディレクトリ内のすべてのファイルを(ファイルごとに)独自のアーカイブに個別に7Zipしようとしています。しばらく探し回っていましたが、方法が見つかりませんでした。
トップレベルディレクトリ$topdir
内およびその下にあるすべての通常のファイルに対してこれを再帰的に実行したいとします。
find "$topdir" -type f -exec 7za a {} {} \;
圧縮したいのみファイルを含む単一のディレクトリの場合、次を使用します
for pathname in "$topdir"/*; do
7za a "$pathname" "$pathname"
done
ここでの違いは、隠しファイルは圧縮されないということです。 dotglob
のbash
シェルオプションをshopt -s dotglob
で有効にすると、ループに非表示の名前が含まれます。
find
(入力が少なくなる)を使用すると、単一のディレクトリでファイルを実行できます。
find "$topdir" -maxdepth 1 -type f -exec 7za a {} {} \;