将文件名写入文件

将文件名写入文件

在目录中我有X.txt, Y.txt,Z.txt文件。我想将这些文件名移动到一个文件中,如下所示:

Out_file.txt
X.txt
Y.txt
Z.txt

有什么unix命令可以实现这个吗?

答案1

ls >> Out_file.txt

当然,当您位于相关文件夹中时...

答案2

这是非常简单的步骤,您只需将“ls”的输出重定向到文件中即可。

ls -1 >> file.txt

答案3

解决此问题的另一种选择如下:

ls | tee Out_File.txt

答案4

find我认为对于OP的问题以及许多类似的目标来说是一个不错的选择:

  • 递归和相关文件规范是“自由的”,因此此命令将收集用户当前目录下或以下的find所有文件的列表,并将该列表重定向到:.txtOut_file.txt

    find -name \*.txt > Out_file.txt
    

    输出将采用以下形式./filename.txt:每行一个文件。

  • 如果输出中只需要裸文件名(无目录规范),find最多版本)有一个内置printf选项:

    find -name \*.txt -printf "%f\n" > Out_file.txt
    

    输出将采用以下形式filename.txt:每行一个文件。

  • 如果不需要完全递归(或者如果“有限递归”是必需的),该maxdepth选项可用:

    find -maxdepth 1 -name \*.txt -printf "%f\n" > Out_file.txt
    

    此输出将与此处的许多其他答案采用相同的形式,但不一定按字母顺序排序。如果需要按字母顺序排列,则find可以通过管道传输输出sort

    find -maxdepth 1 -name \*.txt -printf "%f\n" | sort > Out_file.txt
    
    X.txt  
    Y.txt  
    Z.txt  
    
  • 我发现最有用的版本是:

    find $(pwd) -name \*.mp3 > FullPlaylist.txt
    

    我可以创建一个完整的播放列表(例如 mp3 编码的)音乐文件,可以与mpg321

相关内容