我在一个文件夹中有一堆视频文件,其后缀为avi.avi。
find /home/alex/Filme/ -type f -name '*.avi.avi'
/home/alex/Filme/Super 8.avi.avi
/home/alex/Filme/Exit - A Night From Hell.avi.avi
/home/alex/Filme/Der Plan.avi.avi
/home/alex/Filme/Ich.bin.Nummer.4.2011.avi.avi
snipp
我尝试使用以下“脚本”删除双精度字符串
#!/bin/bash
for i in `find $HOME/Filme -type f -name '*avi.avi' -print0`
do
sed -e 's/'*.avi.avi'/'*.avi'/g'
done
还是像这样通过重命名实现这一目标的更好方法?
find $HOME/Filme -type f -name '*avi.avi' -print0 -exec sh -c rename -v 's/*.avi.avi/*.avi/g' {} \;
我不确定文件夹名称是否会保留。是的,我为此找到了一些问题和答案,但是我很难适应它的情况。
我的方法之一有效吗?
你快到了
find $HOME/Filme -type f -name '*avi.avi' -exec \
sh -c "rename -v 's/\.avi\.avi$/.avi/'" {} \;
(to的参数rename
是正则表达式替换;并且/g
仅当您想替换匹配文件名中的每个匹配项时,该选项才有用;但是根据定义,最后只能有一个匹配项。)
也许更有用的是,您可以对此进行批处理,并且可能只是mv
用于提高可移植性。
find $HOME/Filme -type f -name '*avi.avi' -exec \
sh -c 'for f; do mv -v "$f" "${f%.avi}"; done' _ {} +
如果不需要遍历子目录,
for f in $HOME/Filme/*.avi.avi; do
mv -v "$f" "${f%.avi}"
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句