如何将目录中除子目录之外的所有内容移动到另一个目录?

如何将目录中除子目录之外的所有内容移动到另一个目录?

我正在打扫我的家(/home)时,觉得有这个必要。帮我将文件(没有扩展名)移动到另一个目录。但是我想保持家里的目录完好无损。各种服务都依赖于它们

答案1

您想移动的只是文件,而不是目录或目录中的文件。您可以使用find带有~(=home) 作为参数的命令,也可以使用maxdepth 1(仅搜索父目录) 和type f(文件)。结果 (给定目录中的所有文件) 随后通过管道传输到xargs(-0 选项用于忽略某些字符的特殊含义),执行移动.将命令mv -t TargetDirectory产生的输入移动find到 TargetDirectory。

find ~ -maxdepth 1 -type f -print0 | xargs -0 mv -t Path/To/Target/Directory

参考:动量 寻找 参数

答案2

将带有扩展名的文件移动到/target/directory,假设扩展名的常规概念:

find ~ -type f -name '?*.?*' -exec mv -t /target/directory/ {} +

这将从您的主目录开始递归查找并移动文件。

我已经使用了?*.?*而不是只是为了排除*.*表单中的隐藏文件.foobar和类似的文件。foobar.

如果您不想遍历子目录(即非递归):

find ~ -maxdepth 1 -type f -name '?*.?*' -exec mv -t /target/directory/ {} +

如果您想移动所有文件而不管其扩展名:

find ~ -type f -exec mv -t /target/directory/ {} +

非递归:

find ~ -maxdepth 1 -type f -exec mv -t /target/directory/ {} +

相关内容