在unix shell中是否可以获取所有文件夹,从特定文件夹开始?例如,在使用" tree"之后,我有了folder1和folder2。我得到它们像:folder1,folder2。但我想得到:folder2,folder1。 (以不同的顺序)
答案 0 :(得分:0)
愚蠢但工作(用bash或ksh93):
#!/usr/bin/env bash
[[ -d $1 ]] || { echo "Usage: ${0##*/} first-directory" >&2; exit 1; }
first_directory=$1
all_directories=( */ )
all_directories=( "${all_directories[@]%/}" )
printf '%q\n' "$first_directory"
for directory in "${all_directories[@]}"; do
[[ $directory = "$first_directory" ]] && continue
printf '%q\n' "$directory"
done
请注意,我们以eval
- 安全的形式打印目录,这可以保证他们每行一个。由于UNIX上的文件名可以包含文字换行符,因此除非使用NUL分隔符(名称中不能),否则打印文字名称是不安全的。