我想替换每个文件路径的一部分,这将通过find linux命令找到。 我的方法如下:
find . -type f -name "*.txt" -exec echo {} | sed "s/f/u/g" {} \;
我希望在文件路径中用“u”替换每个字母“f”。不幸的是我收到了这个错误:
find: missing argument to `-exec'
sed: can't read {}: No such file or directory
sed: can't read ;: No such file or directory
我做错了什么?谢谢你的帮助。
答案 0 :(得分:4)
您不需要echo {} |
使用你的find命令:
find . -type f -name "*.txt" -exec sed "s/f/u/g" '{}' \;
I would like to replace the part of each file path
如果您只想更改文件名/路径,请使用:
find . -type f -name "*.txt"-exec bash -c 'echo "$1" | sed "s/f/u/g"' - {} \;
答案 1 :(得分:1)
find . -type f -name "*.txt" | while read files
do
newname=$(echo "${files}" | sed s"@f@u@"g)
mv -v "${files}" "${newname}"
done
我不完全理解文件路径的含义。如果您不是在谈论文件名,请进一步澄清。