gpt4 book ai didi

linux - 如何通过脚本列出 Bash 中的目录和文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:12 24 4
gpt4 key购买 nike

我想列出目录树,但我必须为其编写脚本,并且作为参数脚本应该采用基本目录的路径。 list 应从此基目录开始。

输出应该是这样的:

Directory: ./a
File: ./a/A
Directory: ./a/aa
File: ./a/aa/AA
Directory: ./a/ab
File: ./a/ab/AB

所以我需要为这个基本目录中的每个目录和文件打印基本目录的路径。

已更新

运行脚本我应该在终端中输入:“.\test.sh/home/usr/Desktop/myDirectory”或“.\test.sh myDirectory”——因为我从桌面级别运行 test.sh .现在脚本应该从/home/usr/Dekstop/myDirectory 级别运行

我的 test.sh 文件中有以下命令:

find . | sed -e "s/[^-][^\/]*\//  |/g"

但它是命令,而不是 shell 代码并打印如下输出:

DIR: dir1
DIR: dir2
fileA
DIR: dir3
fileC
fileB

如何从基本目录打印每个目录或文件的基本目录路径?有人可以帮我解决吗?

最佳答案

可能不清楚你想要什么,

find . -type d -printf 'Directory: %p\n' -o -type f -printf 'File: %p\n'

不过我觉得看目录的子树更有用

find "$dirname" -type f

要回答评论,也可以使用递归函数在纯 bash(没有外部命令的内置)中完成。

rec_find() {
local f
for f in "$1"/*; do
[[ -d $f ]] && echo "Directory: $f" && rec_find "$f"
[[ -f $f ]] && echo "File: $f"
done
}

rec_find "$1"

关于linux - 如何通过脚本列出 Bash 中的目录和文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49004738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com