閉じたディレクトリに基づいてファイル名を変更する

閉じたディレクトリに基づいてファイル名を変更する

初心者の質問であることをご了承ください。しかし、私はそれぞれ共通の名前を持つファイルを含む一意のディレクトリをたくさん持っています。

ここに画像の説明を入力してください。

私がやりたいことは、ファイルをディレクトリに移動して名前を変更することです

ワイルドカードを使用する方が良いかもしれませんが、リストを作成してそれを繰り返すことができるようです。

助けてくれてありがとう。

答え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%/}スラッシュ文字は削除されます。

関連情報