Linux如何批量复制文件到每一个文件夹并解压后删除

如果你希望批量复制文件到每个文件夹,并且解压每个文件夹中的压缩文件(覆盖已有文件),然后再删除原始的压缩包,可以采取以下细化的步骤:

1. 批量复制文件到每个文件夹

使用 find 命令找到每个文件夹,并将文件复制到每个文件夹中。这里假设要复制的文件是 yourfile.zip

find /var/www/html -mindepth 1 -maxdepth 1 -type d -exec cp -f yourfile.zip {} \;

2. 解压每个文件夹中的压缩文件并删除压缩包

使用 find 命令找到每个文件夹中的压缩包,解压缩并删除原始压缩包

find /var/www/html -name '*.tar.gz' -exec sh -c 'tar -zxvf "{}" -C "$(dirname "{}")" && rm -f "{}"' \;

这里的命令会递归地查找所有 .tar.gz 文件,然后解压缩到它们所在的文件夹,并删除原始的压缩包文件。

注意事项:

  • 请替换命令中的 yourfile.zip/var/www/html 为你实际的压缩文件名和网站目录路径。
  • -f 选项用于强制复制,确保覆盖目标文件夹中的现有文件。
  • tar 命令用于解压缩 .tar.gz 文件,使用 -zxvf 参数来解压并显示详细信息。
  • 这些命令会递归地处理每个文件夹中的压缩文件,确保在执行之前备份重要数据,以免意外删除或覆盖文件。.

完成后单独删除压缩包

删除压缩包

  • 解压缩后,可以删除原始的压缩包文件。
find /var/www/html -name 'yourfile.zip' -type f -delete

这将删除所有名为yourfile.zip的文件。

不覆盖已经存在文件的情况下解压

如果你想要在每个 /www/wwwroot/ 目录下的文件夹中解压名为 web.tar.gz 的压缩包,但又不希望覆盖已经存在的文件,可以按照以下步骤进行操作:

1. 找到并解压每个压缩包

使用 find 命令来查找每个文件夹中的压缩包,并逐个进行解压操作。

find /www/wwwroot/ -type f -name 'web.tar.gz' -exec sh -c 'dir="{}"; dir=${dir%/*}; tar -zxvf "{}" -C "$dir"' \;

解释和注意事项:

  • find /www/wwwroot/ -type f -name 'web.tar.gz':查找所有 /www/wwwroot/ 目录下的名为 web.tar.gz 的文件。
  • -exec sh -c '...' \;:对于每个找到的文件,执行后面的 shell 命令。
  • dir="{}"; dir=${dir%/*};:这两行的目的是获取文件所在的父目录路径,因为我们需要在该目录下解压缩文件。
  • tar -zxvf "{}" -C "$dir":解压缩命令,-zxvf 参数用于解压 .tar.gz 文件并显示详细信息,-C "$dir" 参数指定解压到指定目录。

这些命令会逐个查找并解压 /www/wwwroot/ 下每个文件夹中的 web.tar.gz 压缩包,但会避免覆盖已存在的文件。

检查是否已经存在某文件然后再确定是否解压

如果要在解压 web.tar.gz 文件时,检查是否存在同一文件夹中的 class 文件夹,并在存在时删除 web.tar.gz 压缩包,可以采取以下步骤:

find /www/wwwroot/ -type f -name 'web.tar.gz' -exec sh -c '
dir="{}"
dir=${dir%/*}
if [ -d "$dir/class" ]; then
rm -f "{}"
else
tar -zxvf "{}" -C "$dir"
fi
'
\;

解释和注意事项:

  • find /www/wwwroot/ -type f -name 'web.tar.gz':查找所有 /www/wwwroot/ 目录下的名为 web.tar.gz 的文件。
  • -exec sh -c '...' \;:对于每个找到的文件,执行后面的 shell 命令。
  • dir="{}"; dir=${dir%/*};:获取文件所在的父目录路径。
  • if [ -d "$dir/class" ]; then ... fi:检查该目录下是否存在 class 文件夹。
  • rm -f "{}":如果存在 class 文件夹,则删除当前的 web.tar.gz 压缩包。
  • tar -zxvf "{}" -C "$dir":如果不存在 class 文件夹,则解压缩 web.tar.gz 文件到指定目录。

这样,每次执行这个命令时,会检查是否有 class 文件夹存在,如果存在则删除 web.tar.gz 压缩包,否则进行解压缩操作。

科技

TikTok算法机制和原理:TikTok视频推荐机制是怎么运作的

2024-6-30 16:22:46

科技

Linux命令入门:最常用最实用的Linux命令

2024-7-18 8:09:42

搜索