次のディレクトリ構造があります。
Project/
|
+--Part1/
| |
| +--audio.mp3
|
+--Part2/
| |
| +--audio.mp3
|
+--Part3/
| |
| +--audio.mp3
...
Part1.mp3、Part2.mp3などのファイルにしたいです。
各フォルダには1つのファイルしか含まれていないため、ファイルが破損したり、同じ名前の複数のファイルを処理したりする危険はありません。
find
一種の/xargs
コマンドプラスとを使用してcut
これを行うことができるようですが、mv
実際にコマンドを設定する方法がわかりません。
ベストアンサー1
これらの例はすべてのPOSIXシェルで実行でき、外部プログラムは必要ありません。
これにより、Part * .mp3ファイルがプロジェクトディレクトリと同じレベルに保存されます。
(cd Project && for i in Part*/audio.mp3; do echo mv "$i" ../"${i%/*}".mp3; done)
これにより、プロジェクトディレクトリにPart * .mp3ファイルが残ります。
for i in Project/Part*/audio.mp3; do echo mv "$i" ./"${i%/*}".mp3; done
これらのソリューションはシェルを使用してpattern matching
parameter expansion
新しいファイル名を生成します。
${parameter%word} Remove Smallest Suffix Pattern. The word is expanded to produce a pattern. The parameter expansion then results in parameter, with the smallest portion of the suffix matched by the pattern deleted.