在幫助下,我有這個腳本,但我不確定如何從變數中洗掉“./”,以便我可以壓縮檔案夾。請你給我建議。
謝謝尼克
#/bin/sh
BASEDIR=/tmp/
cd $BASEDIR
find . -type d | sort > newfiles.txt
DIFF=$(comm -13 oldfiles.txt newfiles.txt)
echo $DIFF
if [ "$DIFF" != "" ]
then
#echo "A new dir is found"
tar -czvf "$DIFF".tar.gz --verbose
fi
mv newfiles.txt oldfiles.txt
失敗的輸出:
tar -czvf ./file2.tar.gz --verbose
tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.
uj5u.com熱心網友回復:
錯誤源于此命令:
tar -czvf "$DIFF".tar.gz --verbose
您指定存檔名稱,但不指定要添加到所述存檔的檔案/檔案夾。
您需要將其更改為:
tar -czvf "$DIFF".tar.gz "$DIFF"
請注意,您不需要,--verbose因為您已經-v使用-czvf.
但是,如果DIFF包含多個專案(即行),您的代碼將不會按預期作業。你可能想要這樣的東西:
#/bin/sh
BASEDIR="/tmp/"
cd "$BASEDIR"
find . -type d | sort > newfiles.txt
DIFF=$(comm -13 oldfiles.txt newfiles.txt)
echo "$DIFF"
IFS=$'\n'
for item in $DIFF
do
#echo "A new dir is found"
tar -czvf "$item.tar.gz" "$item"
done
mv newfiles.txt oldfiles.txt
話雖如此,如果你想./從find輸出中洗掉,你可以使用:
find . -type d -printf "%P\n" | sort > newfiles.txt
但您實際上不必為您的腳本執行此操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324292.html
