查找和拆分命令,但结果到另一个目录?

时间:2017-01-20 19:43:38

标签: linux shell split

我无法完成这项工作:

find /var/lib/vz/dump -maxdepth 1 -type f -size +25G -exec split --bytes=30G /splittedfiles/  {} {} \;

没有/ splittedfiles /它运行正常。但我想将拆分文件放在不同的文件夹中。

1 个答案:

答案 0 :(得分:1)

前缀必须在要拆分的文件名后面。这意味着您需要使用:

find /var/lib/vz/dump -maxdepth 1 -type f -size +25G \
     -exec split --bytes=30G {} /path/to/split/files/ \;

{}是要拆分的文件的名称。写入的拆分文件的路径将在指定目录中创建aa之类的名称。 主要障碍是第二个分割文件将覆盖第一个文件的分割数据。这是一个问题,在find命令行上不容易解决。如果我要这样做,我会安排使用:

… -exec split-script.sh {} +

并且split-script.sh将处理位置和技巧,例如在/path/to/split/files/之后使用文件的基本名称。这种shell脚本不必持续很长时间 - 一旦你运行这个工作就可以删除它。

for file in "$@"
do
    split -b 30G "$file" "/path/to/split/files/$(basename "$file")."
done

(最后的.将基本名称与aa等后缀分开。)