web-dev-qa-db-ja.com

バッチ7すべてのファイルをディレクトリに個別にZipします(Centos 7.6)

Linux Centos 7.6で、ディレクトリ内のすべてのファイルを(ファイルごとに)独自のアーカイブに個別に7Zipしようとしています。しばらく探し回っていましたが、方法が見つかりませんでした。

1
KnowledgeSeeker

トップレベルディレクトリ$topdir内およびその下にあるすべての通常のファイルに対してこれを再帰的に実行したいとします。

find "$topdir" -type f -exec 7za a {} {} \;

圧縮したいのみファイルを含む単一のディレクトリの場合、次を使用します

for pathname in "$topdir"/*; do
    7za a "$pathname" "$pathname"
done

ここでの違いは、隠しファイルは圧縮されないということです。 dotglobbashシェルオプションをshopt -s dotglobで有効にすると、ループに非表示の名前が含まれます。

find(入力が少なくなる)を使用すると、単一のディレクトリでファイルを実行できます。

find "$topdir" -maxdepth 1 -type f -exec 7za a {} {} \;
1
Kusalananda