簡體   English   中英

使用“ ----” Bash腳本將目錄與文件分開

[英]Separate Directories from Files with “----” Bash Scripting

我想將目錄與列表中的文件分開。 我希望它們顯示如下:

  1. DirectoryName1
  2. DirectoryNameA
  3. DirectoryName_Two

    -

  4. FILENAME1

  5. FileNameA
  6. FileName_Two

基本上,我要在目錄和文件之間插入兩個或三個破折號。 以下是下面的代碼。

  1. DirectoryName1
  2. DirectoryNameA
  3. DirectoryName_Two
  4. FILENAME1
  5. FileNameA
  6. FileName_Two

這是我的代碼:

#!/bin/bash

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

這是一種可能的解決方案:

#!/bin/bash

if [[ $# -ge 1 ]]; then
    dir_to_list=$1
    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

干杯

更新:修復了列出其他目錄的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM