我需要一个将目录和子目录写入文本文件的脚本。
例如,脚本位于 /Mainfolder 中,此文件夹中有四个其他文件夹。每个包含几个文件。
现在我希望脚本在文本文件中写入每个文件的路径。
Subfolder1/File1.dat
Subfolder1/File2.dat
Subfolder2/File1.dat
Subfolder3/File1.dat
Subfolder4/File1.dat
Subfolder4/File2.dat
重要的是列表前面没有斜线。
使用find
命令:
find Mainfolder > outputfile
如果您只想要列出的文件,请执行
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
您可以将此查找与-exec
:
find . -type f -exec bash -c 'f="{}"; echo "${f:2}"' \;
./
这将通过从前面删除来打印从当前路径开始的所有文件。
如果你的 bash 版本足够高,你可以这样做:
#!/bin/bash
shopt -s globstar
echo ** > yourtextfile