答え1
このようにしてみてください。
for d in ${PATH_OF_YOUR_DIRECTORY}/*/ ; do
mv ${d}index.html ${PATH_WHERE_YOU_HAVE_TO_MOVE}/$(basename ${d}).html
done
答え2
質問からは明確ではありませんどのようにファイル名を変更する必要があるため、元の名前に元のディレクトリ名を追加して名前を変更する必要があるとします。
次のコードは、index.html
質問に示すように、作業ディレクトリにサブディレクトリがあり、各サブディレクトリにファイルがあると想定しています。ファイルindex.html
はという名前の新しいディレクトリに移動されますallfiles
。
mkdir allfiles || exit
for pathname in */index.html
do
mv -- "$pathname" "allfiles/${pathname%/index.html}-index.html"
done
変数pathname
は同様のパス名を保持し、パラメータ拡張はパス名のA-Dwelling-Place/index.html
末尾から${pathname%/index.html}
ビットを削除します。/index.html
代わりにファイルの代わりにディレクトリを繰り返すことができます。
mkdir allfiles || exit
for dirname in */
do
mv -- "$dirname"/index.html "${dirname%/}-index.html"
done
この場合、dirname
変数にはA-Dwelling-Place/
同じパス名があり、末尾の${dirname%/}
スラッシュ文字は削除されます。