Bash脚本将名称匹配的文件和文件夹压缩到另一个目录

问题描述 投票:0回答:1

我有许多以下类型的文件夹和文件:

├── name 1.htm
├── name 2.html
├── name 1_files 
│   ├── some files
├── name 2_files 
│   ├── some files

我需要每个.htm或.html文件来找到具有相同名称但末尾带有“ _files”的适当文件夹。

然后我需要将找到的文件和文件夹放在另一个文件夹中,例如'000',然后将其压缩。

然后我需要将生成的.zip文件移动到另一个文件夹,例如'Found'。

我一般来说是bash和脚本编写的新手,所以可以得到任何帮助。

bash shell zip
1个回答
0
投票

这里是一个zip-by-prefix.sh脚本,您可以从htm *文件所在的目录中运行:

mkdir -p found
ls *.htm* > htmlfiles.txt
cat htmlfiles.txt | cut -d"." -f1 | uniq > htmlprefixes.txt
PREFIXES=$(echo `cat htmlprefixes.txt`)
for prefix in $PREFIXES
do 
mkdir -p 000$prefix
cp $prefix* 000$prefix
zip -r 000$prefix.zip 000$prefix
mv 000$prefix.zip found
done
rm *.txt

说明

  • 第1行:如果found目录不存在,则创建它
  • 2-4行:将htm或html 唯一前缀提取到PREFIXES变量中
  • 第5-11行:遍历PREFIXES变量数组以创建000前缀目录(例如0001),将前缀htm或html文件复制到0001目录,将0001目录压缩为0001.zip文件,然后将zip文件移动到找到目录。对每个前缀(例如2、3、4等)重复。

最后检查“找到的”目录是否包含压缩文件

© www.soinside.com 2019 - 2024. All rights reserved.