ディレクトリの名前を取得して、それぞれの tar.gz ファイルを作成したい
たとえば、A で始まるすべてのディレクトリ:
count = 10
for ((k = 1 ; k < $count ; k++));
do
tar -cf ADIRNAME.tar.gz ADIRNAME
sleep 1
done
これどうやってするの?
A*
これにより、ディレクトリごとに tarball が作成されます。
for dir in A*/; do
tar -cf "${dir%/}".tar.gz "$dir"
done
ワイルドカードは、ループするディレクトリ名のリストに展開されます。ディレクトリとして一致を設定する末尾のスラッシュが展開に含まれます。単純な変数置換を使用して、tarball のファイル名からそれを切り取ります (存在する場合は末尾から切り取られ${variable%suffix}
た変数の値に展開されます。対応する置換やその他の置換も多数あります。シェルのマニュアル ページを参照してください)。suffix
${variable#prefix}
二重引用符は必須ですが、ファイル名に空白が含まれていない限り、スクリプトは二重引用符がなくても機能します。これは、多くのシェル スクリプト チュートリアルでもよくある見落としです。
何をする必要があるかは明確ではありませんが、構築するためのいくつかのビットを次に示します。
すべてのディレクトリを検索:
find -maxdepth 1 -type d
特定の文字で始まるすべてのディレクトリを検索します。
find -maxdepth 1 -type d -name 'X*'
これで最初の文字のリストを取得できます:
for n in `find -maxdepth 1 -type d`; do echo ${n:2:1}; done | sort -u
そして最後に、それらの文字で tar を実行します。