シェルスクリプト総合 その17

このエントリーをはてなブックマークに追加
235213
仕方ないので自分で作ってみました。指摘ヨロです。
#!/bin/sh
if [ $# -lt 2 ] ; then
echo "Usage: delter.sh tar_file delete_file1 delete_file2 ..."
exit 1
fi
tar_file=$1
if [ ! -f $tar_file ] ; then
echo "tar_fileが存在しません"
exit 1
fi
mkdir dltar_work
cp -p $tar_file dltar_work
cd dltar_work
kind=""
case "$tar_file" in
*.tar.gz)
kind=tar.gz
gzip -cd $tar_file | tar tvf - | sort -k 6 > ../before.txt
gzip -cd $tar_file | tar xvf -
;;
*.tar)
kind=tar
tar tvf $tar_file > ../before.txt
tar xvf $tar_file
;;
esac
236続き:2011/01/23(日) 15:28:43
shift
for file in $*
do
find . -name $file -exec rm -f {} \;
done
rm -f $tar_file
if [ "$kind" = "tar.gz" ] ; then
tar cvf - * | gzip > $tar_file
gzip -cd $tar_file | tar tvf - | sort -k 6 > ../after.txt
elif [ "$kind" = "tar" ] ; then
tar cvf $tar_file *
tar tvf $tar_file > ../after.txt
fi
diff ../before.txt ../after.txt
echo "tarファイルを置き換えますか?[yes or no]"
read answer
case "$answer" in
y | yes)
mv -f $tar_file ../
esac
cd ..
rm -rf dltar_work before.txt after.txt
echo done