【问题标题】:How to send list of file in a folder to a txt file in Linux如何将文件夹中的文件列表发送到Linux中的txt文件
【发布时间】:2011-05-05 22:59:38
【问题描述】:

我对 Linux(在本例中为 CentOS)相当陌生。我有一个文件夹,里面有大约 2000 个文件。理想情况下,我想在命令提示符下执行一个命令,将所有文件的名称写到一个 txt 文件中。

如果必须,我也可以编写一个实际的程序来执行此操作,我只是在想可能有一种方法可以简单地从命令提示符处执行此操作。

【问题讨论】:

  • 注意这一点,文件名可能包含各种棘手的字符。例如。换行

标签: linux bash shell centos


【解决方案1】:

你可以使用

ls > filenames.txt

(通常,使用“Terminal”、“shell”或“Bash”启动 shell。)您可能需要先使用 cd 进入该文件夹,或者您可以使用 ls ~/docs > filenames.txt

【讨论】:

  • 谢天谢地,我在写一个小 bash 脚本之前搜索了这个!
  • 对于绝对路径printf '%s\n' "$PWD"/* >filenames.txt
  • 对于这种琐碎用途之外的任何事情,您可能应该避免使用ls。见mywiki.wooledge.org/ParsingLs
  • 如果我想将每个文件名保存在双引号“”中并且每个这样的“”用逗号分隔?请告诉如何做到这一点。即如果文件名是 a,b,c,d,e;我希望它们以"a","b","c","d","e" 的形式保存到文本文件中
【解决方案2】:

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

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

【讨论】:

  • 如何忽略某些文件,例如备份文件(文件名中带有“~”后缀的文件)?
  • @VickyDev 一种方法是通过grep 过滤find 的输出:find ~/docs -type f -maxdepth 1 | grep -v '~$' > filenames.txt
  • @VickyDev 更简洁的方法是将find-name-not 一起使用:find ~/docs -type f -maxdepth 1 -not -name '*~' > filenames.txt
  • @VickyDev 请查看stackoverflow.com/questions/1341467/… 了解有关该主题的更多信息
猜你喜欢
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多