Bash:如何查找和替换文件名中的单词

时间:2017-04-30 13:09:24

标签: bash replace find

查找名称中包含foo的所有文件。

find / -name *foo*

例如结果是

/etc/lib/football
/var/log/some/somefooandother
/home/me/anotherfoo
/etc/all/files/includingfooinnamefoo

但我怎样才能取代所有foo - > bar这些文件的名称?

/etc/lib/bartball
/var/log/some/somebarandother
/home/me/anotherbar
/etc/all/files/includingbarinnamebar

1 个答案:

答案 0 :(得分:0)

您可以尝试使用它:

for i in $(ls | grep "foo"); do
j="$(echo $i | sed s/foo/bar/)"
mv "$i" "$j"
done;
  • 查找包含字符串foo的文件并存储到变量i

        for i in $(ls | grep "foo");
    
  • 重命名并存储到另一个变量j

    j="$(echo $i | sed s/foo/bar/)"
    
  • 使用mv重命名文件名

    mv "$i" "$j"
    

我已经在我的系统上检查了这个并且它运行良好但是在继续之前备份数据总是安全的。你永远不知道拼写错误(我或你的)是什么原因。