Linux查找子目录中的所有文件并移动它们

Linux查找子目录中的所有文件并移动它们,linux,recursion,move,Linux,Recursion,Move,我有一个Linux系统,其中一些用户将带有ftp的文件放在一个目录中。在这个目录中有一些用户可以创建的子目录。现在我需要一个脚本来搜索这些子目录中的所有文件,并将它们移动到单个目录中(用于备份)。问题是:子目录不应该被删除 用户的目录是/files/media/documents/ 文件必须移动到/files/dump/目录中。我不关心/files/media/documents/中的文件,它们已经由另一个脚本处理了 我已经尝试过这个脚本: for dir in /files/media/doc

我有一个Linux系统,其中一些用户将带有ftp的文件放在一个目录中。在这个目录中有一些用户可以创建的子目录。现在我需要一个脚本来搜索这些子目录中的所有文件,并将它们移动到单个目录中(用于备份)。问题是:子目录不应该被删除

用户的目录是/files/media/documents/ 文件必须移动到/files/dump/目录中。我不关心/files/media/documents/中的文件,它们已经由另一个脚本处理了

我已经尝试过这个脚本:

for dir in /files/media/documents/
do
    find "$dir/" -iname '*' -print0 | xargs -0 mv -t /files/dump/
done

您可以使用find来代替迭代。在手册页中有一个“-type”选项记录在案,因此对于仅移动文件,您可以执行以下操作:

find "/files/media/documents/" -type f -print0 | xargs -0 mv -t /files/dump/
您也不希望在/files/media/documents/中查找文件,而是希望在所有子目录中查找文件?只需添加“-mindepth”:


或者,您也可以使用“-exec”跳过第二个命令(xargs):


您可以使用find来代替迭代。在手册页中有一个“-type”选项记录在案,因此对于仅移动文件,您可以执行以下操作:

find "/files/media/documents/" -type f -print0 | xargs -0 mv -t /files/dump/
您也不希望在/files/media/documents/中查找文件,而是希望在所有子目录中查找文件?只需添加“-mindepth”:


或者,您也可以使用“-exec”跳过第二个命令(xargs):


我还发现了另一种方法:对于/files/media/documents/*do mv$dir/*/files/dump/done中的dir,这似乎是可行的,但它也不适用于您的子目录中的目录,而且还会移动这些子目录。如果这不重要,那么for循环也会这样做;-)我不关心子目录,因为如果它们存在,它们也必须被移动:-)我还找到了另一种方法:对于/files/media/documents/*do mv$dir/*/files/dump/done中的dir,这似乎是可行的,但它对子目录中的目录不起作用,也会移动这些子目录。如果这不重要,那么for循环也会这样做;-)我不关心子目录,因为如果它们存在,它们也必须被移动:-)
find "/files/media/documents/" -type f -mindepth 1 -exec mv {} /files/dump/ \;