用于在textfile中列出子目录和文件的Bash脚本

用于在textfile中列出子目录和文件的Bash脚本,bash,shell,unix,Bash,Shell,Unix,我需要一个脚本,将目录和子目录写入文本文件 例如,脚本位于/main文件夹中,该文件夹中还有四个其他文件夹。每个文件包含几个文件 现在我想让脚本在textfile中写入每个文件的路径 Subfolder1/File1.dat Subfolder1/File2.dat Subfolder2/File1.dat Subfolder3/File1.dat Subfolder4/File1.dat Subfolder4/File2.dat 重要的是列表前面没有斜杠。如果bash版本足够高,可以这样做:

我需要一个脚本,将目录和子目录写入文本文件

例如,脚本位于/main文件夹中,该文件夹中还有四个其他文件夹。每个文件包含几个文件

现在我想让脚本在textfile中写入每个文件的路径

Subfolder1/File1.dat
Subfolder1/File2.dat
Subfolder2/File1.dat
Subfolder3/File1.dat
Subfolder4/File1.dat
Subfolder4/File2.dat

重要的是列表前面没有斜杠。

如果bash版本足够高,可以这样做:

#!/bin/bash
shopt -s globstar
echo ** > yourtextfile

如果bash版本足够高,可以这样做:

#!/bin/bash
shopt -s globstar
echo ** > yourtextfile
使用find命令:

如果您只想要列出的文件,请执行以下操作

find Mainfolder -type f > outputfile
如果搜索当前目录,还可以使用%p格式选项去除前导项。/

find . -type f -printf '%P\n' > outputfile
使用find命令:

如果您只想要列出的文件,请执行以下操作

find Mainfolder -type f > outputfile
如果搜索当前目录,还可以使用%p格式选项去除前导项。/

find . -type f -printf '%P\n' > outputfile

此解决方案假定子目录只包含文件,而不包含任何目录

find . -type f -print | sed 's|^.*/S|S|'
我在四个子目录中的每一个子目录中创建了一个文件。原始输出为:

./Subfolder1/File1.dat
./Subfolder4/File4.dat
./Subfolder2/File2.dat
./Subfolder3/File3.dat
Subfolder1/File1.dat
Subfolder4/File4.dat
Subfolder2/File2.dat
Subfolder3/File3.dat
过滤后的输出为:

./Subfolder1/File1.dat
./Subfolder4/File4.dat
./Subfolder2/File2.dat
./Subfolder3/File3.dat
Subfolder1/File1.dat
Subfolder4/File4.dat
Subfolder2/File2.dat
Subfolder3/File3.dat

此解决方案假定子目录只包含文件,而不包含任何目录

find . -type f -print | sed 's|^.*/S|S|'
我在四个子目录中的每一个子目录中创建了一个文件。原始输出为:

./Subfolder1/File1.dat
./Subfolder4/File4.dat
./Subfolder2/File2.dat
./Subfolder3/File3.dat
Subfolder1/File1.dat
Subfolder4/File4.dat
Subfolder2/File2.dat
Subfolder3/File3.dat
过滤后的输出为:

./Subfolder1/File1.dat
./Subfolder4/File4.dat
./Subfolder2/File2.dat
./Subfolder3/File3.dat
Subfolder1/File1.dat
Subfolder4/File4.dat
Subfolder2/File2.dat
Subfolder3/File3.dat

您可以将此查找与-exec一起使用:


这将通过从前面删除/来打印从当前路径开始的所有文件。

您可以将此查找与-exec一起使用:

这将通过删除/从前面打印从当前路径开始的所有文件。

最后一行应该是Q+1了解如何在printf支持中使用find build。最后一行应该是Q+1了解如何在printf支持中使用find build。