Nas*_*ser 3 ssh command-line zip
我有一个由许多子目录组成的目录,每个子目录包含不同的文件,例如:
目录All包含子目录A, B, C, and D。每个子目录包含如下文件:
A (Run1.csv, Run4.csv)
B (Run2.csv, Run3.csv)
C (Run1.csv, Run3.csv)
D (Run2.csv, Run4.csv)
Run Code Online (Sandbox Code Playgroud)
如您所见,每个文件在不同的子目录中都有不同的重复项。例如,Run1.csv文件夹A中的数据与Run1.csv文件夹中的数据不同C。
我想要做的是我想压缩一个特定的运行文件,例如我想压缩run2的所有文件。我使用了以下命令:
zip run2.zip All Run2.csv
zip run2.zip Run2.csv
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用。
我该如何解决?
您可以bash按如下方式使用路径名扩展:
zip run2.zip */Run2.csv
Run Code Online (Sandbox Code Playgroud)
*/Run2.csv匹配Run2.csv任何子目录中调用的每个文件。如果你有非常匹配的水珠中的很多文件,这种失败,因为shell的ARG_MAX限制。要解决这个问题,请使用:
printf '%s\0' */Run2.csv | xargs -0 zip run2.zip
Run Code Online (Sandbox Code Playgroud)
这使用内置printf来构建匹配文件的零分隔列表并将其通过管道传输到xargs,它zip会根据需要经常调用。由于add是zip的默认模式,它更新存档添加文件到它。
如果您需要进一步深入到一个未知的或子目录的变动数,设定bash的globstar选项有
shopt -s globstar
Run Code Online (Sandbox Code Playgroud)
并使用:
zip run2.zip **/Run2.csv # or respectively
printf '%s\0' **/Run2.csv | xargs -0 zip run2.zip
Run Code Online (Sandbox Code Playgroud)
**/Run2.csvRun2.csv递归匹配任何子目录中调用的每个文件。
| 归档时间: |
|
| 查看次数: |
6096 次 |
| 最近记录: |