那样重命名文件。
给定一个称为FOO
的主要目录,其中有许多子目录,我想转到每个子目录,找到路径:
/mango/pears/peanuts/butter/
用/supplier
/mango/pears
我了解sed
是我想要的,但我 can't
弄清楚了:
cd /FOO
sed -i 's|/mango/pears|/supplier|g' $(find . -type f)
有什么想法吗?这个问题不会像此
找到包含/芒果/梨/花生/黄油/的foo中的每一个路径,您将使用:
find /FOO -path "*/mango/pears/peanuts/butter/*"
如果要修改结果列表,则可以通过SED进行输出(但是没有-i,这只能使用要更改的文件才有意义(:
find /FOO -path "*/mango/pears/peanuts/butter/*" -type f | sed 's|/mango/pears|/supplier|g'
sed -i可以在SED的每个结果上使用,但会在文件中更改此类路径。这可能适用于您的命令,但容易受到文件名中的空白。相反,您应该使用-Exec参数:
find /FOO -path "*/mango/pears/peanuts/butter/*" -type f -exec sed -i 's|/mango/pears|/supplier|g' {} ";"