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

时间:2013-08-26 11:01:09

标签: bash shell unix

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

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

现在我希望脚本在文本文件中写下每个文件的路径。

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

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

4 个答案:

答案 0 :(得分:3)

使用find命令:

find Mainfolder > outputfile

如果您只想要列出的文件,请执行

find Mainfolder -type f > outputfile

如果您使用./格式选项搜索当前目录,也可以删除前导%P

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

此解决方案假定子目录仅包含文件 - 它们不包含任何目录。

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

答案 3 :(得分:1)

您可以将此查找与-exec

一起使用
find . -type f -exec bash -c 'f="{}"; echo "${f:2}"' \;

这将从当前路径开始打印所有文件,方法是从前面删除./