Unix递归移动所有文件但保留结构

时间:2014-09-01 08:58:19

标签: unix recursion gzip hp-ux mv

我有一个名为“in”的文件夹,其中包含几个文件夹“a”“b”“c”,我想将所有文件移动到文件夹“proc”并压缩它们。棘手的部分是“in / a”中的文件必须移动到“proc / a”,“in / b”必须移动到“proc / b”等等 我设法找到所有文件并将其压缩为此命令

find . -type f ! \( -name "*gz" -o -name "*tmp" -o -name "*xftp" \) -exec gzip -n '{}' \;

但是我找不到一个通用的命令来移动那些无效的文件,告诉我文件夹的名称。任何人都可以帮我一把吗?

1 个答案:

答案 0 :(得分:0)

好吧,我最终发现我还有一些问题,例如目标文件夹不存在,所以我最终使用了这段代码

find . -type f ! \( -name "*gz" -o -name "*tmp" -o -name "*xftp" \) -exec gzip -n '{}' \;
find . -name "*.gz" | cpio -p -dumv $1
if [ "$?" = "0" ]; then
    find . -name "*.gz" -exec rm -rf {} \;
else
    echo "cpio Failed!" 1>&2
    exit 1
fi

第一行找到要处理的所有文件并将其拉链。 第二行找到目标目录的所有文件和副本,在我的例子中它是1美元(参数1),创建尽可能多的文件夹以确保相同的结构。 第三行检查最后一个命令的状态,如果它找不到,并从源文件夹whiteout中删除所有gz文件,删除任何文件夹。如果它没有删除任何内容,那么我就可以分析发生了什么(可能用完了空间)

我敢打赌,使用这么多的磁盘空间可以更快地完成此项操作,但由于这对我来说不是问题所以看起来可以接受。