【发布时间】:2016-03-08 19:54:39
【问题描述】:
基本上我有一个这样设置的平面文件:
/this/is/a/log/目录 | 30
/this/also/is/have/logs | 45
/this/logs/也 | 60
我要做的是提取此平面文件的第一列,即目录路径,并检查其中是否有超过 500 个日志文件。如果是,请删除除最新的 500 个文件之外的所有文件。
我试图做这样的事情
#!/bin/ksh
for each in "$(awk '{ print $1 }' flat_file)"; do
cd "$each";
if [ "ls -l | wc -l >= 500" ]; then
rm `ls -t | awk 'NR>500'`
else
:
fi
done
但是从我读到的内容来看,我不能像我试图做的那样使用 for 循环从我的脚本中 cd 并且你可以从一个函数中执行它,此时我基本上只是创建了一个函数并复制了它代码,它当然没有工作(不太熟悉shell脚本)。类似于 Python 的 OS 模块的东西,我可以使用 os.listdir() 并传入目录名称,这将是完美的,但我还没有找到一种简单的方法来做到这一点。
【问题讨论】:
标签: shell loops scripting ksh cd