【发布时间】:2018-11-12 18:54:31
【问题描述】:
我想重命名某个目录中find 选择的几个文件,然后使用xargs 和mv 重命名这些文件,并带有参数扩展。但是,它没有用......
示例:
mkdir test
touch abc.txt
touch def.txt
find . -type f -print0 | \
xargs -I {} -n 1 -0 mv {} "${{}/.txt/.tx}"
结果:
bad substitution
[1] 134 broken pipe find . -type f -print0
工作解决方案:
for i in ./*.txt ; do mv "$i" "${i/.txt/.tx}" ; done
虽然我终于找到了解决问题的方法,但我仍然想知道为什么第一种find + xargs 方法不起作用,因为我认为第二种方法对于类似的任务不是很通用.
谢谢!
【问题讨论】:
标签: bash shell xargs parameter-expansion