find $(MY_DIR)/source -type f -name "*.wav3" -print0 | \
xargs -0 -P $(NPROC) -n1 -I {} \
mv {} $(MY_DIR)/sound/{}.wav
上記のすべての.wav3ファイルを見つけてサウンドフォルダに移動しようとしましたが、デフォルトの名前を保持するために出力ファイルを切り取る方法がわかりません。
$(MY_DIR)/source/deeply/nested/file/song1.wav3
$(MY_DIR)/source/deeply/nested/file/song2.mp3.wav3
次に移動します。
$(MY_DIR)/sound/song1.wav
$(MY_DIR)/sound/song2.wav
スクリプトをどのように調整できますか?
答え1
find
++を台無しにすることなく、xargs
単にmv
切り替えてzsh
実行するだけです。
autoload -U zmv
zmv -n '$(MY_DIR)/source/**/(*).wav3' '$(MY_DIR)/source/${1%%.*}.wav'
仕組み:
- まず
zmv
ロードします。autoload
-n
引数は実行を防ぐことです。結果が満足な場合は、このオプションを削除してください。- 二重アスタリスクは、
**
すべてのネストされたディレクトリと一致します。 (*)
何でも一致し、結果を$1
変数に保存する${1%%.*}
最初の点の後に続くすべての文字を削除します。.wav
最後に拡張を追加