[问题] 请问如何改多重资料夹内的特定档案名称

楼主: REIDO (NEET)   2015-12-09 20:18:49
我这边有很多资料夹,
a/
a/b/
b/c/d
类似这样,大家位置不同,内部有个档案叫xyz,我希望所有xyz都改名成fgh
问题是mv除了改档名也会改位置,如果我用find . -name xyz -exec mv {} fgh \;
会把所有档案弄到工作资料夹,还会互相盖台,我是希望他们待在原本地方,
只是换个名,请问要怎么办?
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2015-12-09 21:19:00
find . -name xyz -exec mv {} `dirname {}`/fgh ?\;这样试试看?
作者: bibo9901 (function(){})()   2015-12-09 21:41:00
find . -name xyz -execdir mv {} fgh \;
作者: bluecadence (Maxwell's demon)   2015-12-09 22:09:00
find . -type f -name xyz -print0 | xargs -0 -I{} sh -c 'mv "{}" "$(dirname "{}")/fgh"'
作者: n3oanderson (wake up ...)   2015-12-11 01:09:00
find . -name oldf -type f -execdir mv {} newf \;
楼主: REIDO (NEET)   2015-12-11 19:03:00
CP64的方式会失败,还是搬到工作目录,也就是`dirname {}`失灵,这我也搞不懂。bibo9901成功。bluecadence和n3oanderson也都OK,感谢各位的帮忙。为什么两个人都有用dirname {},CP64的会失败啊?应该对啊
作者: CaptainH (Cannon)   2015-12-15 21:12:00
因为`...`会翻译后再传给findCP64其实是在执行 find . -name xyz -exec mv {} ./fgh

Links booklink

Contact Us: admin [ a t ] ucptt.com