我正在尝试将特定文件从一个文件夹移动到另一个文件夹。以下是否有效?
mkdir test
touch test1.sh
touch test2.sh
touch test3.sh
mkdir test2
find test/ | xargs -I% mv % test2
答案 0 :(得分:1)
我认为这可行:
find ./ -name "test*.sh" | xargs -I% mv % test2
答案 1 :(得分:0)
你的例子中有一些奇怪的东西:
如果 test1 不包含任何子目录,或者如果您想按原样移动子目录,则只需执行
mv test1/* test2
(请注意,这将(默认情况下)不会移动以句点开头的条目。如果这是一个问题,您应该考虑不使用Posix shell,例如bash或Zsh,或者确实可以使用{{1为安全起见find
选项)。
问题始于子目录。 find的输出包含所有目录以及最后的文件。然后,-prune
内的mv
将移动,例如,目录test1 / foo,如果它以后想要处理文件test1 / foo / bar / baz.txt,则该文件不再在此处。总体效果是您将移动所有子目录(如我的第一个不需要xargs
的解决方案),但另外还有大量的错误消息。