Linux 如何在循环中压缩和复制文件
我遇到过这样一种情况:我必须读取gunzip文件列表(例如:test.gz,test[2020]*.gz)并将其压缩到另一个文件夹(temp)。我正在使用LinuxBashshell。 到目前为止,我已经做到了: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”文件夹 我应该在这个代码之后打开另一个循环吗?或者我可以在一个循
for f in *.gz
do
gunzip $f
done
当我运行脚本时,文件成功地压缩为test.csv,test[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没有任何意义。在处理循环中的第一个文件后,它们都将被移动。