复制文件,验证然后使用 shell 脚本压缩

复制文件,验证然后使用 shell 脚本压缩

我希望创建一个脚本 - linux 或 python 脚本,以便它可以为我创建以下内容以及验证从文件夹复制的文件。

我有两个文件夹:

文件夹 A 有 300 个 .xls 文件 - 此文件夹缺少当前位于文件夹 B 中的一些文件。

FolderB 有 500 个 .xls 文件

我想将选定的 100 个文件从文件夹 B 复制到文件夹 A。然后希望脚本验证当前位于文件夹 A 中的所有文件(从 B 复制 100 个文件后现在应该是 400 个)也存在于文件夹 B 中。

然后我希望脚本将所有这些文件单独压缩为自己的 bzip2 文件。基本上,当该过程完成时,最终将有 400 个 bzip2 文件(每个 excel 一个)。

答案1

脚本如何知道自动区分该文件夹中要压缩的文件?有特定的命名约定吗?如果没有,您可能需要将要压缩的文件从文件夹 A 和文件夹 B 合并到文件夹 C。以下脚本将压缩每个文件。如果您不想保留原始 .xls 文件,请删除-k

#/bin/bash
files="/path/to/files"
for f in $files; do
    bzip2 -k $f
done

答案2

我不清楚您希望如何选择这 100 个丢失的文件。这会随机选择 100 个(如果您只想选择前 100 个丢失的文件,请删除--shuf):

a=folderA
b=folderB
# copy 100 files from folderB
parallel --shuf -j1 --halt now,success=100 [ ! -f $a/{/} ] '&&' cp {} $a/{/} ::: $b/*
# Verify all files in folderA is in folderB
parallel [ ! -f $b/{/} ] '&&' echo {} is in $a but not in $b ::: $a/*
# bzip2 them all
parallel bzip2 ::: $a/*

GNU Parallel 主要用于让您可以运行bzip2每个 CPU 线程。

相关内容