如何使用终端将.txt添加到目录中的所有文件

时间:2014-04-26 21:13:42

标签: bash terminal

我有很多没有文件扩展名的文件。现在我想将.txt添加到所有文件中。我尝试了以下操作,但它出现了错误mv: rename . to ..txt: Invalid argument

我怎样才能做到这一点?

find . -iname "*.*" -exec bash -c 'mv "$0" "$0.txt"' {} \;

1 个答案:

答案 0 :(得分:4)

你快到了!

只需添加-type f即可处理文件

find . -type f -exec bash -c 'mv "$0" "$0.txt"' {} \;

如果您的mv处理-n选项,您可能想要使用它(这是不覆盖现有文件的选项)。


您遇到的错误是因为.found找到的第一个错误之一,当您要重命名.时,系统会抱怨(正确)!使用-type f您确定不会发生这种情况。现在,如果您想对目录中的所有内容执行操作,您可以在-mindepth 1命令的开头添加find(因为.被视为深度0)。


您的问题不是很清楚,但如果您想将扩展程序.txt添加到没有扩展程序的所有文件,该怎么办? ? (我们同意有一个扩展意味着在名称中有一个句点)。在这种情况下,您将使用-name '*.*'的否定,如下所示:

find . -type f \! -name '*.*' -exec bash -c 'mv "$0" "$0.txt"' {} \;