linux系统中,查找指定文件夹下文件夹名含有1、2、3的压缩文件夹并复制到指定文件夹中的完整命令
时间: 2023-06-19 20:03:38 浏览: 45
可以使用以下命令:
```
find /path/to/folder -type d \( -name "*1*" -o -name "*2*" -o -name "*3*" \) -exec tar -czvf {}.tar.gz {} \; -exec cp {}.tar.gz /path/to/destination \; -delete
```
其中,`/path/to/folder` 是指定的文件夹路径,`*1*`、`*2*`、`*3*` 是通配符,匹配文件夹名包含 1、2、3 的文件夹,`-exec` 参数是在 `find` 命令查找到的每个目录上执行的命令,`-delete` 参数表示删除原始目录。
该命令将在 `/path/to/folder` 中查找文件夹名中包含 1、2、3 的目录,并将它们压缩成 `.tar.gz` 文件,然后将这些文件复制到指定文件夹 `/path/to/destination` 中,并删除原始目录。
相关问题
Linux 写一个脚本 查询所有六个月之前的文件夹并压缩 压缩完成后发送到新建的文件夹下
### 回答1:
在 Linux 中, 你可以使用 `find` 命令来查找六个月之前的文件夹, 然后使用 `tar` 命令将其压缩. 然后使用 `mv` 命令将压缩文件移动到新建文件夹下.
脚本可能如下:
```bash
#!/bin/bash
# 新建文件夹
mkdir -p /path/to/new/folder
# 查找六个月之前的文件夹
old_folders=$(find /path/to/folders -type d -mtime +180)
# 遍历查找到的文件夹并压缩
for folder in $old_folders; do
tar -zcvf "$folder.tar.gz" "$folder"
done
# 移动压缩文件到新建文件夹
mv /path/to/folders/*.tar.gz /path/to/new/folder
```
在脚本中, /path/to/folders 是你要查找文件夹的路径, /path/to/new/folder 是你要存储压缩文件的新建文件夹的路径.
-mtime +180 代表 180天之前的修改时间
注意: 脚本在执行之前需要进行修改路径,请根据实际情况修改
### 回答2:
在Linux系统中,可以使用Shell脚本来实现查询所有六个月之前的文件夹并压缩,然后将压缩文件发送到新建的文件夹下。以下是一个示例脚本:
```shell
#!/bin/bash
# 定义六个月前的时间戳
six_months_ago=$(date -d "6 months ago" +"%s")
# 定义压缩文件输出目录
output_dir="compressed_folders"
# 创建压缩文件输出目录
mkdir -p "$output_dir"
# 遍历当前目录下的所有文件夹
for folder in */
do
# 判断文件夹的修改时间是否在六个月之前
modified_time=$(stat -c "%Y" "$folder")
if [ "$modified_time" -lt "$six_months_ago" ]; then
# 压缩文件夹
tar -czf "$output_dir/${folder%/}.tar.gz" "$folder"
fi
done
```
此脚本首先获取当前时间六个月前的时间戳,并创建一个目录用于存放压缩文件。然后,它遍历当前目录下的所有文件夹,获取文件夹的修改时间,并与六个月前的时间戳进行比较。如果文件夹的修改时间早于六个月前的时间戳,则将文件夹压缩为.tar.gz文件,并存放到压缩文件输出目录中。
你可以将以上代码保存为名为`compress_folders.sh`的文件,并在终端中运行`bash compress_folders.sh`来执行该脚本。执行完成后,六个月之前的文件夹将被压缩并存放到新建的"compressed_folders"文件夹下。
### 回答3:
要编写一个脚本来查询并压缩所有六个月之前的文件夹,并将压缩文件发送到一个新建的文件夹下面,可以按照以下步骤进行:
1. 首先,创建一个新的文件夹来存放压缩文件:
```
mkdir 新文件夹
```
2. 然后,使用find命令来查找所有六个月之前的文件夹,并压缩它们:
```
find 目标文件夹 -maxdepth 1 -type d -mtime +180 -exec tar -czvf {}.tar.gz {} \;
```
这里,目标文件夹是要查询的文件夹的路径,-maxdepth 1 表示只在目标文件夹下搜索,-type d 表示只查找文件夹,-mtime +180 表示查找六个月之前的文件夹,-exec tar -czvf {}.tar.gz {} \; 表示将找到的文件夹使用tar命令压缩并以文件夹名为文件名保存。
3. 最后,将压缩文件移动到新建的文件夹下面:
```
mv *.tar.gz 新文件夹
```
整个脚本的代码如下:
```bash
#!/bin/bash
# 创建新文件夹
mkdir 新文件夹
# 查找并压缩六个月之前的文件夹
find 目标文件夹 -maxdepth 1 -type d -mtime +180 -exec tar -czvf {}.tar.gz {} \;
# 移动压缩文件到新文件夹
mv *.tar.gz 新文件夹
```
将脚本保存为一个.sh文件,然后在终端中运行该脚本即可完成查询、压缩和文件移动的操作。
linux 获取文件夹中的文件并解压目录下的zip文件
要获取文件夹中的文件并解压目录下的 zip 文件,可以按照以下步骤进行操作:
1. 打开终端,进入要操作的文件夹:
```
cd /path/to/folder
```
2. 获取文件夹中的所有文件名:
```
files=$(ls)
```
3. 遍历所有文件,如果是 zip 文件则解压缩:
```
for file in $files
do
if [[ $file == *.zip ]]; then
unzip $file -d ${file%.zip}
fi
done
```
上述代码中,第 2 步使用 `ls` 命令获取当前文件夹中的所有文件名,并将结果保存在 `$files` 变量中。第 3 步使用 `for` 循环遍历所有文件,如果文件名以 `.zip` 结尾,则使用 `unzip` 命令解压缩该文件,并将解压后的文件保存在与压缩文件同名但去掉 `.zip` 后缀的目录中。
注意,上述代码仅适用于处理当前文件夹中的 zip 文件,并且不考虑嵌套目录的情况。如果要处理嵌套目录中的 zip 文件,需要使用递归的方式查找并处理所有子目录。
相关推荐
![sh](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)