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
扩展名