列出下一级目录,不包括一些命名目录和文件

列出下一级目录,不包括一些命名目录和文件

我想将所有文件夹的列表(包括一层)发送到 txt 文件。不包括一些命名文件夹,不包括任何文件。想象一下这样的文件夹结构。 CAPS 是文件夹。

FOLDER 1

.hidden

TEMP

somefile

=========

=========

FOLDER 2

.hidden

TEMP

DATA1

DATA2

somefile

========

========

FOLDER 3

.hidden

TEMP

DATA1

somefile

我想运行“在此处插入魔术命令”并最终得到如下所示的输出

FOLDER 1

FOLDER 2

DATA1

DATA2

FOLDER 3

DATA1

答案1

我这样做是为了创建您的文件夹结构:

for     f in    FOLDER\ 1 FOLDER\ 2 FOLDER\ 3
do      mkdir   -p "$f/TEMP"
        touch   "$f/.hidden" "$f/somefile"
        case    "$f" in
        (*2)    mkdir -p    "$f/DATA1/TEMP" "$f/DATA2/TEMP";;
        (*3)    mkdir -p    "$f/DATA1/TEMP"
        esac
done

这创建了一棵像这样的树:

find .

.
./FOLDER 1
./FOLDER 1/TEMP
./FOLDER 1/.hidden
./FOLDER 1/somefile
./FOLDER 2
./FOLDER 2/TEMP
./FOLDER 2/.hidden
./FOLDER 2/somefile
./FOLDER 2/DATA1
./FOLDER 2/DATA1/TEMP
./FOLDER 2/DATA2
./FOLDER 2/DATA2/TEMP
./FOLDER 3
./FOLDER 3/TEMP
./FOLDER 3/.hidden
./FOLDER 3/somefile
./FOLDER 3/DATA1
./FOLDER 3/DATA1/TEMP

最后我做到了...

find . ! -path './*/*/*' ! -name TEMP -type d

.
./FOLDER 1
./FOLDER 2
./FOLDER 2/DATA1
./FOLDER 2/DATA2
./FOLDER 3
./FOLDER 3/DATA1

答案2

谢谢,效果很好,我忘记了 .hidden 也是一个文件夹,因此将其添加到 find 命令中。 Find 按添加顺序输出文件夹,因此使用 sort 命令按字母顺序排序。所以我最终得到了

find . ! -path './*/*/*' ! -name TEMP ! -name .hidden -type d | sort > folderlist.txt

稍微清理一下结果

sed -n -e 's;^.*/;;p'

所以它列出为

文件夹1

文件夹2

数据1

数据2

文件夹3

数据1

终于得到了这条线的野兽

find . ! -path './*/*/*' ! -name TEMP ! -name .hidden -type d | sort | sed -n -e 's;^.*/;;p' > folderlist.txt

可能很混乱,但嘿我不是专家。感谢您的所有帮助。

相关内容