Shell脚本重定向到不同的目录并创建列表文件

时间:2015-03-09 14:16:32

标签: shell

             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(即归档列表文件)

所以我不确定要改变什么

1 个答案:

答案 0 :(得分:1)

文件名处理有很多技巧。你应该知道的一件事是POSIX下的文件命名很糟糕。 lsfind之类的命令可能无法返回预期结果(但有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

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html