2014-06-28 72 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

相關問題