所以我按照这里的解决方案:创建与文件同名的文件夹并将文件移动到文件夹中的脚本。我想在一个文件夹中创建与文件同名的文件夹,并将它们移动到该文件夹中。
for file in *; do if [[ -f "$file" ]]; then mkdir "${file%.*}"; mv "$file" "${file%.*}"; fi; done
并且它运行得很好。
但这样做之后,我想将这些文件夹压缩成单独的 zip 文件,我按照这里的解决方案操作:将多个目录压缩成单独的 zip 文件。
for file in *; do zip -r "${file%.*}.zip" "$file"; rm -R "$file"; done
问题是,我如何将这 2 个命令组合成 1 次命令?我是编码新手,我仍然不知道如何将这 2 个命令组合成 1 个命令。
答案1
您可以将它们合并到一个脚本文件中。但是第二个命令会在压缩后删除文件。因此您需要添加一个位置参数。
创建一个名为 zipfoldered.sh 的文本文件(使用 gedit 或 nano)并使其可执行
sudo chmod +x zipfoldered.sh
将其粘贴到文件中
#!/bin/bash
(cd $1
for file in *; do if [[ -f "$file" ]]; then mkdir "${file%.*}"; mv "$file" "${file%.*}"; fi; done
for file in *; do zip -r "${file%.*}.zip" "$file"; rm -R "$file"; done )
现在,您可以使用要运行的位置来调用该脚本:
./wherever_it_is/zipfoldered.sh myFolder
myFolder 是要压缩的文件所在的文件夹……
您可以删除位置参数删除(cd $1
和)
末尾的。这样脚本将在本地运行,但它肯定也会压缩并删除自身......