В качестве упражнения я поставил себе задачу рекурсивно перечислять файлы, используя встроенные bash. Я особенно не хочу использовать ls или find, и я бы предпочел не использовать setopt extendedglob. Следующее работает, но я не вижу, как его расширить с помощью /.* для отображения скрытых файлов. Есть ли простой способ?Рекурсивно перечислять скрытые файлы без ls, find или 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
Добавлено позже: извините - я должен был сказать: 'Баш-3,2 на OS X'
Начиная с 'bash' 4.1, вы можете использовать расширенные шаблоны в аргументе' == 'и'! = 'Без явного включения' extglob', если это ваше возражение. – chepner