我正在使用这个搜索和替换字符串;
find . -name 'xna*jpg' -exec bash -c ' mv $0 ${0/\ (2018_05_28 14_04_27 UTC)/}' {} \;
这样它将用 xna.jpg 替换“xna (2018_05_28 14_04_27 UTC).jpg”
然后我可以对整个目录执行此操作。但是,我收到此错误。
mv: ./xna.jpg is not a directory
所以它正在这样做,但它不会写它。我不明白为什么它在考虑一个目录?
有你的问题:你
$0
被扩展到其中有空格的东西,mv
因此看到两个以上的论点。解决方案:引用东西:
...或根本不使用
find
:(如果你愿意的话,你也可以把它放在一行上,但我在这里更看重可读性而不是紧凑性。)