復元する必要があるディレクトリがたくさんありますが、最初にそれらを .tar にパッケージ化する必要があります。100以上のディレクトリすべてを独自のtarにパッケージ化して、dirがdir.tarになるようにするスクリプトはありますか?
これまでの試み:
for i in *; do tar czf $i.tar $i; done
ディレクトリ名にスペースが含まれていると、作成したスクリプトは機能しません。名前が分割されるためです。また、このレベルにファイルが存在する場合は tar ファイルも処理されます。
このコマンドを使用して、再帰的ではないディレクトリを一覧表示できます。
find . -maxdepth 1 -mindepth 1 -type d
そして、これはそれぞれにtarを実行します:
find . -maxdepth 1 -mindepth 1 -type d -exec tar cvf {}.tar {} \;
そのレベルにスペースを含むディレクトリ名はありますか? そうでない場合、スクリプトは問題なく動作します。
私が通常行うことは、実行したいコマンドをエコーアウトしてスクリプトを作成することです。
$ for i in *
do
echo tar czf $i.tar $i
done
次に、出力を見て、必要なことが行われているかどうかを確認できます。プログラムが動作することを確認したら、コマンド ラインを編集してコマンドを削除しecho
ます。
ディレクトリ名にスペースが含まれている場合は、変数を二重引用符で囲みます。
for i in *
do
tar czf "$i.tar" "$i"
done