将最新修改的文​​件从所有子目录复制到具有相同子目录结构的新目录

时间:2017-09-19 05:55:51

标签: linux bash rsync cp

我有一个目录有100个子目录,每个目录有100个文件。每个子目录中的每天文件数都会增加一个。我想在Linux中编写一个脚本,将所有100个子目录复制到另一个只有一个最新文件的位置。如何做到这一点?

2 个答案:

答案 0 :(得分:1)

从当前目录(包含100个子目录)中,您可以将脚本运行为:

   for f in `find ./* -maxdepth 0 -type d`
do
        if [ $f != "./directory_to_copy" ]
        then
                  cp $f/`ls -t $f | head -1` ./directory_to_copy
        fi
 done

如果你的out目录不在当前目录中,你可以跳过If语句,你可以指定需要在cp语句中存储名称的目录的相对路径或绝对路径:

cp $f/`ls -t $f | head -1` path_to_directory/name_of_directory

答案 1 :(得分:0)

您可以将block修改为:

if [ $f != "./directory_to_cop" ]
    then
              mkdir ./directory_to_copy/$f 2>/dev/null
              cp $f/`ls -t $f | head -1` ./directory_to_copy/$f
    fi

如果out目录不在当前目录中:

mkdir path_to_directory/name_of_directory/$f 2>/dev/null

cp $f/`ls -t | head -1` path_to_directory/name_of_directory/$f