递归重命名文件 - 最好使用oneliner

zet*_*tah 6 bash

我找到了这个答案我该怎么办...但它根本不起作用 - 它没有因为我未知的原因重命名任何文件

在我开始四处寻找之前,我认为即使对于新手企鹅来说,这也应该是一件容易的事,但对我来说似乎并非如此。

例如,我根本无法ls列出所有*.txt子文件夹中的所有内容,这让我感到惊讶(没有 grep 或类似的)。
然后我发现findfind . -name name_1.txt列出了文件很好,但是

for f in $(find . -name name_1.txt) ; do echo "$f" ; done

分割用空间作为分隔整个文件路径,所以它是不可用的该输出传递给像一些命令mvrename

我想问一下上面的命令有什么问题,如果可能的话,还有一些漂亮的oneliner,这样我就可以递归地重命名name_1.txtname_2.txt

ams*_*ams 10

find . -name '*.txt' -print0 | xargs -0 -n1 bash -c 'mv "$0" "${0/oldname/newname}"'

显然,重命名模式只是一个简单的例子,但请注意,它会编辑整个路径,而不仅仅是文件名。


归档时间:

查看次数:

18743 次

最近记录:

7 年,5 月 前