【发布时间】:2016-01-18 20:23:34
【问题描述】:
作为一个练习,我为自己设定了使用 bash 内置函数递归列出文件的任务。我特别不想使用 ls 或 find,我更不想使用 setopt extendedglob。以下似乎有效,但我看不到如何使用 /.* 扩展它以列出隐藏文件。有没有简单的解决方法?
g() { for k in "$1"/*; do # loop through directory
[[ -f "$k" ]] && { echo "$k"; continue; }; # echo file path
[[ -d "$k" ]] && { [[ -L "$k" ]] && { echo "$k"; continue; }; # echo symlinks but don't follow
g "$k"; }; # start over with new directory
done; }; g "/Users/neville/Desktop" # original directory
稍后添加:抱歉 - 我应该说:'bash-3.2 on OS X'
【问题讨论】:
-
从
bash4.1 开始,您可以在==和!=的参数中使用扩展模式,而无需明确打开extglob,如果您反对的话。
标签: bash recursion hidden-files built-in