Bash 使用find、xargs删除文件扩展名
我正在尝试通过实践删除文件扩展名“log”:Bash 使用find、xargs删除文件扩展名,bash,shell,Bash,Shell,我正在尝试通过实践删除文件扩展名“log”: find -name "*.log" | xargs -t -I {} mv {} {{}%.log} 我可能只会使用重命名: find -name '*.log' | xargs rename .log '' 或shell脚本: find -name '*.log' | while read f; do mv $f ${f%.log}; done 要想使用bash参数扩展,需要将值指定给一个参数: for file in $(find -na
find -name "*.log" | xargs -t -I {} mv {} {{}%.log}
我可能只会使用
重命名:
find -name '*.log' | xargs rename .log ''
或shell脚本:
find -name '*.log' | while read f; do mv $f ${f%.log}; done
要想使用bash参数扩展,需要将值指定给一个参数:
for file in $(find -name '*.log') ; do mv ${file} ${file%.log} ; done
如果您使用的是bash
4或更高版本,只需使用
shopt -s globstar
for f in **/*.log; do
mv -- "$f" "${f%.log}"
done
否则,使用find
执行一个shell,其参数是要重命名的文件;这允许您使用参数展开来剥离扩展
find -name '*.log' -exec sh -c 'mv -- "$1" "${1%.log}"' {} \;
有多个rename
s,它们采用不同的参数。您是否可以更新您的问题,以明确显示您试图实现的目标?这似乎正好完成了您在问题中试图做的事情。