ls grep 过滤文件的大小
时间: 2023-08-31 13:15:22 浏览: 159
可以使用 `ls` 命令结合 `grep` 命令来过滤文件的大小。
例如,如果要查找当前目录下大小大于 1MB 的文件,可以使用以下命令:
```
ls -lh | grep -E '\d+M'
```
这个命令会列出当前目录下的文件,并使用 `-lh` 参数将文件大小以更易读的方式显示。然后使用 `grep` 命令过滤出文件大小大于 1MB 的文件,其中 `\d+M` 表示匹配一个或多个数字并跟随一个大写字母 M,即匹配大小为 MB 的文件。
类似地,如果要查找大小小于 100KB 的文件,可以使用以下命令:
```
ls -lh | grep -E '\d+K'
```
其中 `\d+K` 表示匹配一个或多个数字并跟随一个大写字母 K,即匹配大小为 KB 的文件。
相关问题
请利用ls命令和grep命令,找出当前目录下,用户root的文件
可以使用以下命令来找出当前目录下,用户root的文件:
```
ls -l | grep "^-.*\sroot\s" | awk '{print $NF}'
```
解释一下这个命令:
- `ls -l` 显示当前目录下的文件和文件夹,以长格式列出(包括文件权限、所有者、大小等信息)。
- `grep "^-.*\sroot\s"` 从 `ls -l` 的输出中过滤出所有者为 root 的文件。这里使用了正则表达式,`^-` 表示以 `-` 开头,也就是普通文件;`.*` 匹配任意字符,`\sroot\s` 匹配空格后跟着 root 用户名,再跟着一个空格,这样就能过滤出所有者为 root 的文件。
- `awk '{print $NF}'` 从 `grep` 的输出中提取文件名。`awk` 用于对每一行进行处理,`$NF` 表示最后一列,也就是文件名,这里只输出文件名。
这样就能找到当前目录下所有属于 root 用户的文件。
编写一个 shell 脚本,自动将用户主目录下所有小于 5KB 的文件打包成 tar.gz(提示:需要配合 ls 和 grep 命令)。
当你想要编写一个shell脚本来自动打包用户主目录下所有小于5KB的文件成.tar.gz压缩文件,你可以按照以下步骤来设计这个脚本。假设用户的主目录是`~`:
```bash
#!/bin/bash
# 获取当前用户的主目录
USER_HOME=$HOME
# 使用ls -l命令列出用户主目录下的所有文件,并通过grep过滤出大小小于5KB的行
SMALL_FILES=$(find $USER_HOME -')
# 如果存在符合条件的小文件,创建tarball
if [ "$SMALL_FILES" ]; then
# 创建一个临时文件名来保存小文件列表
FILE_LIST=./temp_files.txt
echo "$SMALL_FILES" > $FILE_LIST
# 使用tar命令创建并压缩tarball,同时使用gzip
tar czvf small_files.tar.gz $(cat $FILE_LIST)
# 清理临时文件
rm $FILE_LIST
else
echo "No files smaller than 5KB found in your home directory."
fi
```
在这个脚本中,我们首先获取用户的主目录,然后使用`find`命令查找所有小于5KB的文件。接着,我们将这些小文件的路径存储到一个临时文本文件中。如果找到了文件,我们就创建一个`.tar.gz`文件并将小文件添加进去。最后,删除临时文件。
阅读全文