src_dir="/export/home/destination"
list_file="client_list_file.txt"
file=".csv"
echo "src directory="$src_dir
echo "list_file="$list_file
echo "file="$file
cd /export/home/destination
touch $list_file
x=`ls *$file | sort >$list_file`
if [ -s $list_file ]
then
echo "List File is available, archiving now"
y=`tar -cvf mystuff.tar $list_file`
else
echo "List File is not available"
fi
上面的脚本工作正常,它应该创建一个包含所有.csv文件和tar的列表文件。
但是我尝试在运行脚本时从不同的目录执行此操作,因此它应该转到目标目录并生成目标目录中包含所有.csv的列表文件,并从列表文件中生成.tar(即归档列表文件)
所以我不确定要改变什么
答案 0 :(得分:1)
文件名处理有很多技巧。你应该知道的一件事是POSIX下的文件命名很糟糕。 ls
或find
之类的命令可能无法返回预期结果(但有99%的时间会返回)。所以这是你必须要做的事情才能真正获得文件列表:
for file in $src_dir/*.csv; do
echo `basename $file` >> $src_dir/$list_file
done
tar cvf $src_dir/mystuff.tar $src_dir/$list_file
也许你应该认真学习bash并在下次问SO之前先尝试google。
http://www.gnu.org/software/bash/manual/html_node/index.html#SEC_Contents