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

shi*_*hin 2 bash terminal

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

我怎样才能实现这个目标?

find . -iname "*.*" -exec bash -c 'mv "$0" "$0.txt"' {} \;
Run Code Online (Sandbox Code Playgroud)

gni*_*urf 5

你快到了!

只需添加-type f仅处理文件

find . -type f -exec bash -c 'mv "$0" "$0.txt"' {} \;
Run Code Online (Sandbox Code Playgroud)

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


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


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

find . -type f \! -name '*.*' -exec bash -c 'mv "$0" "$0.txt"' {} \;
Run Code Online (Sandbox Code Playgroud)