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

时间:2018-02-27 08:59:25

标签: linux bash shell

我想列出目录树,但我必须为它编写脚本,因为参数脚本应该将路径转到基目录。列表应该从这个基本目录开始。

输出应如下所示:

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

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

1 个答案:

答案 0 :(得分:0)

使用以下代码创建test.sh。在这里,您将读取系统变量$ 1中的命令行参数,并为find命令提供参数。

#!/bin/bash #in which shell you want to execute this script

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

现在它将如何运作: -

./test.sh /home/usr/Dekstop/myDirectory #you execute this command

此处命令行参数将分配到$ 1。不止一个参数你可以使用1美元到9美元,之后你必须使用shift命令。 (您将在线获得更多详细信息。)

所以你现在的命令就是: -

#!/bin/bash #in which shell you want to execute this script

find /home/usr/Dekstop/myDirectory | sed -e "s/[^-][^\/]*\//  |/g"  

希望这会对你有所帮助。