特定のパターンで始まるファイルにディレクトリ名をプレフィックスとして追加するには?

特定のパターンで始まるファイルにディレクトリ名をプレフィックスとして追加するには?

異なる名前の1000個のディレクトリがありますが、これらすべてのディレクトリのファイルには、、、、、tran-20.ftで始まるファイルがあります。tran-30.fttran-40.fttran-50.fttran-60.ft

ディレクトリ構造

dir1 ---tran-20.ft
  :     tran-30.ft
  :     tran-40.ft
  :     tran-50.ft
  :     tran-60.ft
  :
dir1000

期待される出力

dir1 --- dir1_tran-20.ft
         dir1_tran-30.ft
         dir1_tran-40.ft
         dir1_tran-50.ft
         dir1_tran-60.ft

特定のfile()の接頭辞でディレクトリ名だけを追加したいですかtran*?どうすればいいですか?

答え1

このように パラメータ拡張:

for f in */tran-*.ft; do
    echo mv "$f" "${f%%/*}/${f%%/*}_${f##*/}"
done

echo出力が十分に良く見える場合は削除してください。


それとも真珠rename:

rename -n 's!^([^/]+)/(tran-\d+\.ft)!$1/${1}_$2!' */tran-*.ft

-n出力が十分に良くなったら、スイッチを取り外します。

関連情報