我很抱歉,这似乎是一个愚蠢的问题,但我无力将其搞砸。
我有一堆这样的文件夹:
/ users / me / foo / oops1
/ users / me / foo / oops2
/ users / me / foo / oops3
/ users / me / foo / oops4
/ users / me / foo / bar
不幸的是,它们的名称不是统一的,并且有数百个oops文件夹。
我打算将所有oops文件夹复制到栏中。有没有一种简单的方法可以将所有oops文件夹移动到栏中,而不会导致某种递归移动问题?
复制文件花了几个小时。我希望此举会更快。
顺便说一下,这是在redhat linux服务器上。我只有SSH存取权。
我想如果我愿意
cd foo
mv * bar
会有问题。
不幸的是,Matt的答案和Nicole的答案都表现出不良的风格,并且如果其中任何一个文件夹甚至包含单个空格字符,通配符(例如*
)或换行符,它们都将损坏。运行for item in $(ls …)
是一个巨大的错误,因为它迟早会咬住它们,并且遍历文件名而不正确输出它们会引起各种麻烦。
永远不要解析的输出ls
。
Linux中有一个工具可以查找符合特定条件的文件,它称为find
:
find . -mindepth 1 -maxdepth 1 \
-type d ! -regex ".\/bar$" \
-exec mv '{}' ./bar/ \;
这将在不调用当前工作目录移到任何目录bar
到./bar/
。即使目录名称包含空格,通配符或换行符,它也将起作用。
正则表达式.\/bar$
仅匹配名为的目录./bar
,并且被否定!
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句