从终端打印目录中的文件列表到文本文件(但不是文本文件本身)

jac*_*row 7 bash ls

我想将目录中每个文件的所有文件名打印到.txt文件中.

我们假设我有一个包含3个文件的目录:

file1.txt
file2.txt
file3.txt
Run Code Online (Sandbox Code Playgroud)

我尝试过使用ls > output.txt.

问题是,当我打开时,output.txt我找到这个列表:

file1.txt
file2.txt
file3.txt
output.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法避免打印我重定向输出的文件的名称?或者更好的是有一个命令能够打印除一个目录之外的目录中的文件的所有文件名吗?

mkl*_*nt0 10

printf '%s\n' * > output.txt
Run Code Online (Sandbox Code Playgroud)

请注意,这假定没有预先存在的output.txt文件 - 如果是,请先删除它.

  • printf '%s\n' *使用globbing(文件名扩展)以逐行方式稳健地打印位于当前目录中的所有文件和子目录的名称.

  • 通配情况发生之前, output.txt通过输出重定向创建> output.txt(在命令之前,这仍然发生执行,这说明你的问题),所以它的名字并不在输出包括在内.

  • Globbing还避免使用ls,通常不鼓励使用脚本.