我有一堆目录001/ 002/ 003/,其中有些目录的名称中包含字母。我只想获取所有具有数字名称的目录,然后将它们移至另一个目录。
001/
002/
003/
我尝试这样:
file */ | grep ^[0-9]*/ | xargs -I{} mv {} newdir
匹配的部分有效,但最终将所有内容移至newdir…
newdir
我不确定我是否正确理解,但至少可以提供一些帮助。
使用find和xargs的组合来操作文件列表。
find -maxdepth 1 -regex './[0-9]*' -print0 | xargs -0 -I'{}' mv "{}" "newdir/{}"
使用-print0并-0引用替换符号{}可使您的脚本更加健壮。它可以处理存在不可打印字符的大多数情况。这基本上表示它使用\0char分隔符而不是来传递行\n。
-print0
-0
{}
\0
\n