我用git-bash在win 10中工作。我有一大堆文件,所有文件都没有扩展名。但是我意识到那些类型为“文件”的是html文件。为了选择这些我已被展示:
$ find -not -name '*.*'
现在我需要重命名所有这些文件以添加.html扩展名(它们目前没有扩展名)。我试过了:
$ find -not -name '*.*' -execdir mv {} {}.html
find: missing argument to `-execdir'
如何重命名这些文件?
答案 0 :(得分:1)
您错过了;
- 传递了一个文字分号,表示作为-exec
操作的一部分解析的参数的结尾。接受这样的终结符允许find
接受-exec
之后的其他操作,否则该系列中的任何操作都需要是命令行中的最后一个参数。
find -not -name '*.*' -execdir mv -- '{}' '{}.html' ';'
尽管如此,请注意,上述内容并不能保证完全正常工作(或使用以破折号开头的名称)。更便携的是:
find . -not -name '*.*' -exec sh -c 'for arg do mv -- "$arg" "$arg.html"; done' _ {} +
请注意更改:
.
在POSIX标准find
中是必需的;将它遗留在GNU平台上的能力是一个不可移植的扩展。{}.html
支持,因此可以使用任何合规find
。--
确保将以下参数解析为文字文件名,而不是mv
的选项,即使它们以短划线开头。_
变为shell的$0
,因此后来的参数变为$1
及以后 - 即。数组,也称为"$@"
,for
默认迭代。