(3分)遍历/data/resources/下的文件,找出大于200M的文件,判断其若以“tar”结尾,则使用rm删除;若以“log“结尾,则清空该文件。用liunx系统
时间: 2024-02-17 13:04:05 浏览: 14
可以使用以下命令在Linux系统下实现该功能:
```bash
find /data/resources/ -type f -size +200M \( -name "*.tar" -exec rm {} \; -o -name "*.log" -exec truncate -s 0 {} \; \)
```
该命令使用find命令遍历指定目录下的所有文件,如果文件大小大于200M,则根据文件名的后缀执行不同的操作。如果以“.tar”结尾,则使用-exec选项执行rm命令删除该文件;如果以“.log”结尾,则使用-exec选项执行truncate命令清空该文件内容。需要注意的是,truncate命令用于将文件截断至指定大小,-s选项用于指定截断后的大小,0表示清空文件内容。
相关问题
遍历/data/resources/下的文件,找出大于200M的文件,判断其若以“tar”结尾,则使用rm删除;若以“log“结尾,则清空该文件。
可以使用以下Shell脚本实现:
```
#!/bin/bash
# 遍历 /data/resources/ 目录下的所有文件
for file in /data/resources/*; do
# 判断文件是否大于200M
if [ $(stat -c '%s' "$file") -gt 209715200 ]; then
# 判断文件名是否以 ".tar" 结尾
if [ "${file##*.}" = "tar" ]; then
# 如果是,使用 rm 命令删除该文件
rm "$file"
fi
# 判断文件名是否以 ".log" 结尾
if [ "${file##*.}" = "log" ]; then
# 如果是,使用 cat 命令清空该文件
cat /dev/null > "$file"
fi
fi
done
```
解释:
1. `#!/bin/bash` 表示使用 bash shell 执行该脚本。
2. `for file in /data/resources/*; do` 表示遍历 /data/resources/ 目录下的所有文件,对每个文件执行下面的操作。
3. `[ $(stat -c '%s' "$file") -gt 209715200 ]` 表示判断文件是否大于 200M。
4. `${file##*.}` 表示获取文件名中的扩展名。
5. `rm "$file"` 表示删除文件。
6. `cat /dev/null > "$file"` 表示清空文件。
(3分)遍历/data/resources/下的文件,找出大于200M的文件,判断其若以“tar”结尾,则使用rm删除;若以“log“结尾,则清空该文件。
以下是实现该功能的Python代码:
```python
import os
directory = "/data/resources/"
for filename in os.listdir(directory):
filepath = os.path.join(directory, filename)
if os.path.isfile(filepath) and os.path.getsize(filepath) > 200 * 1024 * 1024:
if filename.endswith(".tar"):
os.remove(filepath)
elif filename.endswith(".log"):
with open(filepath, "w"):
pass
```
该代码首先遍历指定目录下的所有文件,如果文件大小大于200M,则根据文件名的后缀执行不同的操作。如果以“.tar”结尾,则使用os模块的remove()函数删除该文件;如果以“.log”结尾,则使用Python的with语句打开该文件并清空其内容。需要注意的是,文件大小的单位是字节,因此需要将200M转换为字节数。