親パスはであり/opt/data/
、フォルダ内に複数のサブフォルダがありdata
、そのサブフォルダ内に複数のファイルがあり、bashを使用してそれらの一部だけを名前変更したいと思います。
元のファイル名:
WK6LZTPR99999999_dig_2017-07-10 01:55:57.xy
すべてのサブディレクトリのすべてのファイルを次に変更したいと思います。
WK6LZTPR99999999_cur_2017-07-10 01:55:57.mp3
このシナリオを明確に説明してほしいです。
philiphsが提供するソリューションはうまく機能しますが、ディレクトリ内の他のファイル拡張子も変更します。 .xyファイル拡張子のみを変更し、その拡張子を除外する必要があります。
答え1
forループを使用してすべてのファイルを繰り返し、構文を使用してサフィックスを${variable%suffix}
削除し、最後に中間部分を次の構文に置き換えることができます${variable/search/replace}
。
for file in /opt/data/*/*; do
file="${file%xy}"
mv "$file"xy "${file/dig/cur}mp3"
done