使用find,xargs删除文件扩展名

时间:2015-09-02 00:00:34

标签: bash shell

我正在尝试通过练习删除文件扩展名“log”:

find -name "*.log" | xargs -t -I {} mv {} {{}%.log}

3 个答案:

答案 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