Linux 如何在循环中压缩和复制文件

Linux 如何在循环中压缩和复制文件,linux,shell,Linux,Shell,我遇到过这样一种情况:我必须读取gunzip文件列表(例如:test.gz,test[2020]*.gz)并将其压缩到另一个文件夹(temp)。我正在使用LinuxBashshell。 到目前为止,我已经做到了: for f in *.gz do gunzip $f done 当我运行脚本时,文件成功地压缩为test.csv,test[2020].csv 之后,我不知道如何将gunzipped文件(csv文件)复制到“temp”文件夹 我应该在这个代码之后打开另一个循环吗?或者我可以在一个循

我遇到过这样一种情况:我必须读取gunzip文件列表(例如:test.gztest[2020]*.gz)并将其压缩到另一个文件夹(temp)。我正在使用LinuxBashshell。 到目前为止,我已经做到了:

for f in *.gz
do
 gunzip $f
done
当我运行脚本时,文件成功地压缩为test.csvtest[2020].csv

之后,我不知道如何将gunzipped文件(csv文件)复制到“temp”文件夹

我应该在这个代码之后打开另一个循环吗?或者我可以在一个循环中压缩并复制文件吗

我还想在每次复制到“temp”文件夹之间暂停几分钟

非常感谢您的帮助


谢谢

从变量中删除
.gz
后缀,并用该名称复制文件

for f in *.gz
do
    gunzip "$f"
    cp "${f%.gz}" temp
    sleep 60 # sleep 1 minute
done

我认为您要做的不是将*.gz文件复制到temp dir中。是这样吗? 如果您使用“查找”,则可以很好地工作

for f in *.gz
do
 gunzip $f
 mv $(find . -type f -depth 1 \! -name "*.gz") temp
done

@user13906858:与您声明的用例相反,您还可以通过
gunzip-c“$f”>temp/“${f%.gz}”
祝您好运。我本来打算在回答中这样做的,但问题是复制,而不是移动。是的,我同意回答前面提到的问题。我只是想给他们一个他们可能没有想到的选择。祝大家好运!对于
for
循环找到的每个
.gz`文件,运行
mv$(find…*.gz)temp没有任何意义。在处理循环中的第一个文件后,它们都将被移动。