如何在Linux中将文件夹中文件列表发送到txt文件

57

我对Linux(在这种情况下是CentOS)比较陌生。我有一个包含大约2000个文件的文件夹。我希望能够在命令提示符处执行一个命令,将所有文件的名称写入单个txt文件中。

如果必要的话,我也可以编写实际程序来完成它,只是想着可能有一种简单地从命令提示符中执行此操作的方法。


2
小心处理这个,文件名可能包含各种棘手的字符。例如换行符。 - John La Rooy
2个回答

115

你可以直接使用

ls > filenames.txt
通常情况下,使用“终端”、“shell”或“Bash”来启动一个shell。你可能需要使用cd命令先进入该文件夹,或者可以使用ls ~/docs > filenames.txt将文件名保存到filenames.txt文件中。

幸好在编写小型bash脚本之前我谷歌了一下! - JohnAllen
8
对于绝对路径 printf '%s\n' "$PWD"/* >filenames.txt,将所有 $PWD 目录下的文件和目录名写入到 filenames.txt 文件中。 - Prince Patel
对于任何超出此微不足道的用途,您应该避免使用 ls。请参阅 http://mywiki.wooledge.org/ParsingLs - tripleee
如果我想将每个文件名保存在双引号“”中,并且每个这样的“”用逗号分隔,该怎么办?请告诉我如何做到这一点。例如,如果文件名是a、b、c、d、e;我希望它们被保存到文本文件中,格式为"a","b","c","d","e" - kRazzy R
补充一下这个答案: " ls > filenames.txt " 创建/覆盖了 txt 文件的内容。如果您想在现有的 txt 文件中附加更多文件名/数据(而不覆盖先前的条目),只需使用双 >>,即 ls >> filenames.txt :) - Constantina

11

如果只需要获取一个目录中(假设它是~/dirs)立即包含的常规文件的名称,可以这样做:

find ~/docs -type f -maxdepth 1 > filenames.txt

如何忽略某些文件,例如备份文件(名称以“~”作为后缀的文件)? - Vicky Dev
@VickyDev 一种方法是通过 grep 过滤 find 的输出:find ~/docs -type f -maxdepth 1 | grep -v '~$' > filenames.txt - usta
@VickyDev 更简洁的方法是使用find-name-not选项:find ~/docs -type f -maxdepth 1 -not -name '*~' > filenames.txt - usta
@VickyDev 请查看 https://dev59.com/xXM_5IYBdhLWcg3whznx 以获取更多相关主题的信息。 - usta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接