一尘不染

查找名称匹配模式的目录并将其移动

linux

我有一堆目录001/ 002/ 003/,其中有些目录的名称中包含字母。我只想获取所有具有数字名称的目录,然后将它们移至另一个目录。

我尝试这样:

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

匹配的部分有效,但最终将所有内容移至newdir


阅读 268

收藏
2020-06-07

共1个答案

一尘不染

我不确定我是否正确理解,但至少可以提供一些帮助。

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

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

使用-print0-0引用替换符号{}可使您的脚本更加健壮。它可以处理存在不可打印字符的大多数情况。这基本上表示它使用\0char分隔符而不是来传递行\n

2020-06-07