找到名称包含匹配模式的目录并移动它们。

15 浏览
0 Comments

找到名称包含匹配模式的目录并移动它们。

我有一些类似于 001/002/003/ 这样的目录,夹杂在其他名称带有字母的目录中。我只想抓取所有数字名称的目录并将它们移动到另一个目录。

我尝试了这个:

file */ | grep ^[0-9]*/ | xargs -I{} mv {} newdir

匹配部分是起作用的,但最终它会将所有内容移动到 newdir 中...

admin 更改状态以发布 2023年5月21日
0
0 Comments

mv本身不够强大,不能处理模式。

可以尝试这种方法:使用Shell脚本通过替换文件名中的特定模式重命名多个文件

可以使用循环或rename命令。

0
0 Comments

我不确定我是否理解正确,但至少有些东西可以帮助。

使用find和xargs的组合来操作文件列表。

find -maxdepth 1 -regex './[0-9]*' -print0 | xargs -0 -I'{}' mv "{}" "newdir/{}"

使用-print0-0并引用替换符号{}使您的脚本更加健壮。它将处理大多数存在非可打印字符的情况。这基本上意味着它使用\0字符定界符而不是\n传递行。

0