我有很多没有文件扩展名的文件。现在我想添加.txt
到所有文件。我尝试了以下操作,但出现错误,mv: rename . to ..txt: Invalid argument
。
我怎样才能实现这个目标?
find . -iname "*.*" -exec bash -c 'mv "$0" "$0.txt"' {} \;
Run Code Online (Sandbox Code Playgroud)
你快到了!
只需添加-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)