在/home目录里,用find命令定位文件所有者然后将其压缩。
时间: 2023-11-22 12:55:16 浏览: 112
可以使用下面的命令实现:
```
sudo find /home -type f -user <username> -print0 | sudo tar -czvf files.tar.gz --null -T -
```
其中,`<username>`需要替换成目标文件的所有者用户名。
解释一下这个命令:
- `sudo find /home -type f -user <username> -print0`:在 `/home` 目录中查找所有属于指定用户的文件,并打印它们的路径,每个路径以 null 字符 (\0) 结尾。
- `|`:管道符,将前一个命令的输出作为后一个命令的输入。
- `sudo tar -czvf files.tar.gz --null -T -`:从标准输入中读取 null 分隔的文件路径列表,并将它们压缩为 `files.tar.gz` 文件。
注意,这个命令需要 root 权限才能访问 `/home` 目录中的所有文件。如果你不是 root 用户,可以尝试使用 `sudo` 命令来获取临时权限。另外,压缩过程可能会比较耗时,取决于 `/home` 目录中的文件数量和大小。
相关问题
在/home目录里,用find命令定位文件所有者然后将其压缩的Linux命令
以下是将/home目录下的所有文件的所有者压缩为一个文件的Linux命令:
```
find /home -type f -printf '%u\n' | sort | uniq -c > owners.txt && tar -czvf owners.tar.gz owners.txt
```
该命令的作用是:
1. 使用`find`命令查找`/home`目录下的所有文件(不包括目录);
2. 使用`-printf`选项输出每个文件的所有者用户名,然后将这些用户名进行排序并计算出现次数;
3. 将结果写入一个名为`owners.txt`的文本文件中;
4. 使用`tar`命令将`owners.txt`文件压缩为`owners.tar.gz`文件。
注意:该命令需要使用`root`权限才能查找所有文件的所有者。
在/home目录里,用find命令定位文件所有者是student的文件。然后将其压缩。保存/etc目录下的文件到/tmp目录下。列出两个文件的大小。使用gzip压缩文档。
1. 使用以下命令定位文件所有者是student的文件并压缩:
```
find /home -user student -exec tar -czvf student_files.tar.gz {} +
```
该命令会在/home目录下查找所有文件所有者为student的文件,并将其压缩成一个名为student_files.tar.gz的压缩包。
2. 使用以下命令将/etc目录下的文件保存到/tmp目录下:
```
cp -r /etc /tmp
```
该命令会将/etc目录下的所有文件复制到/tmp目录下。
3. 使用以下命令列出两个文件的大小:
```
ls -lh /home/student_files.tar.gz /tmp/etc
```
该命令会列出/home目录下的student_files.tar.gz文件和/tmp目录下的etc文件夹的大小。
4. 使用以下命令使用gzip压缩文档:
```
gzip /tmp/etc
```
该命令会将/tmp目录下的etc文件夹压缩成一个名为etc.gz的文件。