我有很多没有文件扩展名的文件。现在我想将.txt
添加到所有文件中。我尝试了以下操作,但它出现了错误mv: rename . to ..txt: Invalid argument
。
我怎样才能做到这一点?
find . -iname "*.*" -exec bash -c 'mv "$0" "$0.txt"' {} \;
答案 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"' {} \;