我正在尝试通过练习删除文件扩展名“log”:
find -name "*.log" | xargs -t -I {} mv {} {{}%.log}
答案 0 :(得分:1)
我可能只会使用rename
:
find -name '*.log' | xargs rename .log ''
或shell脚本:
find -name '*.log' | while read f; do mv $f ${f%.log}; done
答案 1 :(得分:0)
如果您使用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}"' {} \;
答案 2 :(得分:-1)
要使用bash参数扩展,您需要将值分配给参数:
for file in $(find -name '*.log') ; do mv ${file} ${file%.log} ; done