2014-06-28 39 views

回答

1

一个标准技巧是使用一个新的脚本,做任何你需要的。在这里,我假定${OTHER_DIRECTORY}是一个环境变量,表示在哪里放置压缩文件,但是有很多其他(更好的)方法可以将该信息提供给脚本(例如将目录指定为第一个参数)最后一个论点是一个坏主意)。

#!/bin/bash 

for file in "[email protected]" 
do 
    bzip2 "$file" 
    mv "$file.bz2" "${OTHER_DIRECTORY:-/tmp}" 
done 

然后你可以find运行该脚本:

find . -type f ctime -$2 -name "mylog*.log" -exec tinyscript.sh {} + 

这是非常有效的。如果你只想要一个mv命令,你可以考虑沿着线的东西:

bzip2 "[email protected]" 
bz2=() 
for file in "[email protected]"; do bz2+=("$file.bz2") done 
mv "${bz3[@]}" "${OTHER_DIRECTORY:-/tmp}" 

此代码即使路径名称包含空格和其他不良字符。

+0

谢谢,似乎这样做 – user3761584

1

一种选择可能是这样的:

find . -type f -ctime -$2 -name "mylog*.log" -exec bzip2 {} \; -exec mv {} /path/to/new_dir/ \; 
+0

'mv'会得到旧的文件名并失败,不是吗? –

+0

你好,它似乎没有与MV – user3761584

+0

工作我的意思是附加.bz2后{}确实做到这一招艰难,即使它不完全干净。 – user3761584

相关问题