我的文件夹中有很多扩展名为.txt的文件。我想要 首先重命名它们,然后使用gzip压缩所有这些文件。有没有办法读取所有.txt文件并执行紧随gzip的mv循环,而不是
mv file1.txt file1_n.txt
gzip file1_n.txt
mv file2.txt file2_n.txt
gzip file2_n.txt
....这非常麻烦。我知道我可以为文件名中的.txt模式进行grep转换,但不确定如何将每个文件存储为变量,并依次为mv和gzip循环。
答案 0 :(得分:0)
假设您的shell是bash,请使用for循环:
for FILE in $(ls file*.txt); do
NEWFILE="${FILE%.*}"_n.txt
mv "$FILE" "$NEWFILE"
gzip "$NEWFILE"
done
答案 1 :(得分:0)
您可以使用此:
find -name "*.txt" -exec rename -e 's/.txt/_n.txt/' {} \; ; gzip *_n.txt
说明:
find -name "*.txt"
搜索以*.txt
结尾的文件-exec rename -e 's/.txt/_n.txt/' {} \;
重命名文件; gzip *_n.txt
gzip以_n.txt
结尾的所有文件例如您的文件:
$touch file1.txt file2.txt
$ ls
file1.txt file2.txt
$ find -name "*.txt" -exec rename -e 's/.txt/_n.txt/' {} \; ; gzip *_n.txt
$ ls
file1_n.txt.gz file2_n.txt.gz