如何编写 shell scipt 将文件从 .csv 压缩到 .tar.gz?

如何编写 shell scipt 将文件从 .csv 压缩到 .tar.gz?

我想将 CSV 文件压缩为.tar.gz存档。

我这样尝试过,但它不起作用。任何人都可以帮忙解决这个问题吗?

#!/bin/bash

LOG_FILES="/tmp/"

for file in $LOG_FILES;
do
   if [ -e "$file" ]
   then
       tar -cvzf $file.tar.gz $file;
   fi
done

答案1

find会做的

find /tmp/ -type f -name "*.csv" -execdir tar --remove-files -cvzf "{}.tar.gz" "{}" \;

这将压缩文件并将其存储在原始文件的同一目录中。

这还假设您正在使用 GNU tar

答案2

  1. 你想循环/tmp/*.csvor"$LOG_FILES"/*.csv而不是/tmp/.
  2. 你应该使用[ -f "$file" ]来检查常规的仅文件(
  3. 始终引用文件名变量:"$file"

相关内容