首先列出具有特定目录的目录

时间:2017-10-11 13:16:09

标签: bash unix

在unix shell中是否可以获取所有文件夹,从特定文件夹开始?例如,在使用" tree"之后,我有了folder1和folder2。我得到它们像:folder1,folder2。但我想得到:folder2,folder1。 (以不同的顺序)

1 个答案:

答案 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分隔符(名称中不能),否则打印文字名称是不安全的。