查找名称短于 7 个字符的文件,并将其重命名为 .new 文件名

查找名称短于 7 个字符的文件,并将其重命名为 .new 文件名

查找名称短于 7 个字符的文件,并将其重命名为 .new 文件名

ls | grep -E "^.{,6}$"| xargs -I {} -t mv {} .new

没有工作

答案1

使用:find-regex

...并假设文件位于当前目录中(给出最初的问题)

find -regextype egrep -regex '^.{1,6}$' -exec mv {} .new

中的正则表达式find接受各种语法,因此明确说明是个好主意。此外,如果您想要扫描多个目录,请注意与 不同name-regex它适用于文件的整个路径,因此适当的修补模式将是'.*/[^\]{1,6}'

答案2

考虑到名称为 1-6 个字符的文件不是名称为 7 个或更多字符的文件:

mv !(???????*) .new

???????*匹配 7 个字符或更多字符的名称,并否定!()它)。这个答案假设您只有一个可能的匹配项(您的问题似乎以目前的形式暗示了这一点)。

如果有多个匹配项,则循环使用该模式for

for f in !(???????*); do ... ; done

答案3

使用 for 循环和通配符模式,如下所示:for file in !(???????*); do mv $file $file.new; done

感谢 xenoid 提供正确的 glob 模式。

相关内容