使用“----”Bash 脚本将目录与文件分开

Separate Directories from Files with "----" Bash Scripting

我想将列表中的目录与文件分开。我希望它们显示如下:

  1. DirectoryName1
  2. 目录名A
  3. DirectoryName_Two

    --

  4. 文件名1

  5. 文件名A
  6. FileName_Two

基本上,我希望在我的目录和文件之间有两到三个破折号。 下面是代码的样子。

  1. DirectoryName1
  2. 目录名A
  3. DirectoryName_Two
  4. 文件名1
  5. 文件名A
  6. FileName_Two

这是我的代码:

#!/bin/bash

if  [[ $# -ge 1 ]]; then
   cd "" 2> /dev/null
   if [[ $? = 1 ]]; then
      echo "Please enter a valid directory."
   else
      ls -a | sort -k 1 | awk '{printf "(%d) %s\n", NR, [=11=];}'
   fi
else
   ls -a | sort -k 1| awk '{printf "(%d) %s\n", NR, [=11=];}'
fi

这是一种可能的解决方案:

#!/bin/bash

if [[ $# -ge 1 ]]; then
    dir_to_list=
    if [[ ! -d ${dir_to_list} ]]; then
        echo "Please enter a valid directory."
        exit
    fi
else
    dir_to_list="."
fi

files=`ls --group-directories-first $dir_to_list`
DIRS="TRUE"

i=0

for f in ${files}; do
    if [[ ${DIRS} == "TRUE" && ! -d ${dir_to_list}/${f} ]]; then
        # First non-directory entry
        echo ----
        DIRS="FALSE"
    fi
    (( i++ ))
    echo ${i}. ${f}
done

干杯

更新:修复了列出其他目录的错误