【发布时间】:2017-07-18 21:58:34
【问题描述】:
我有一个目录,其中包含按日期标记的子目录。这些子目录中的每一个都包含按小时标记的文件
parent_dir\
--2017-07-12\
-2017-07-12-00
-2017-07-12-01
-2017-07-12-02
-2017-07-12-03
...
-2017-07-12-23
--2017-07-13\
-2017-07-13-00
-2017-07-13-01
-2017-07-13-02
-2017-07-13-03
...
-2017-07-13-23
--2017-07-14
...
我想从最近的文件开始搜索特定的字符串。
我尝试了以下 sn-ps 来遍历目录:
MAIN_DIR="/<main_dir_location>"
for directory in `$MAIN_DIR/* | sort -r`; do
echo "$directory"
done
或
MAIN_DIR="/<main_dir_location>"
for directory in $("$MAIN_DIR"/* | sort -r); do
echo "$directory"
done
我收到一个错误
/<main_dir_location>/2017-07-12: is a directory
在我看来,shell 似乎正在尝试执行从 for each 循环中获得的目录值。
- 这种理解正确吗?
- 我该如何解决这个问题?
- 有没有更好的方法来完成我在这里尝试做的事情?
【问题讨论】:
-
我相信你缺少
ls命令,试试这个:$(ls "$MAIN_DIR"/* | sort -r)。 -
您见过
find命令吗?这几乎肯定是你想要的。 -
也许一个好的解决方案是
grep递归并按文件名排序。