別のディレクトリにある同じ名前のファイルを新しいディレクトリにコピーし、同時に名前を変更します。

別のディレクトリにある同じ名前のファイルを新しいディレクトリにコピーし、同時に名前を変更します。

次のディレクトリ構造があります。

top_dir
   |________AA
             |_______f1.json
             |_______f2.json
   |________BB
             |_______f1.json
             |_______f2.json
   |________CC
             |_______f1.json
             |_______f2.json

次の構造を得るためにスクリプト/コマンドラインコマンドを作成したいと思います。

new_dir
       |_______f1_AA.json
       |_______f2_AA.json
       |_______f1_BB.json
       |_______f2_BB.json
       |_______f1_CC.json
       |_______f2_CC.json

ファイルの名前変更と移動されたファイルのコピーに関するいくつかの解決策を読んでみました。しかし、まだこの問題を解決できませんでした。ありがとうございます!

ベストアンサー1

ループを使用してください。

mkdir /path_to/new_dir
cd /path_to/top_dir

for i in */*.json; do 
  cp "$i" "/path_to/new_dir/$(basename "$i" .json)_$(dirname "$i").json"
done
  • $(basename "$i" .json)サフィックスなしでファイル名を印刷します。f1
  • $(dirname "$i")ディレクトリ名を印刷します。例:AA

おすすめ記事