使用“----”Bash 脚本将目录与文件分开
Separate Directories from Files with "----" Bash Scripting
我想将列表中的目录与文件分开。我希望它们显示如下:
- DirectoryName1
- 目录名A
DirectoryName_Two
--
文件名1
- 文件名A
- FileName_Two
基本上,我希望在我的目录和文件之间有两到三个破折号。
下面是代码的样子。
- DirectoryName1
- 目录名A
- DirectoryName_Two
- 文件名1
- 文件名A
- 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
干杯
更新:修复了列出其他目录的错误
我想将列表中的目录与文件分开。我希望它们显示如下:
- DirectoryName1
- 目录名A
DirectoryName_Two
--
文件名1
- 文件名A
- FileName_Two
基本上,我希望在我的目录和文件之间有两到三个破折号。 下面是代码的样子。
- DirectoryName1
- 目录名A
- DirectoryName_Two
- 文件名1
- 文件名A
- 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
干杯
更新:修复了列出其他目录的错误