将文件夹中的所有文件名以及每个名称后面的一些文本列入txt文件的脚本

时间:2017-09-05 09:30:26

标签: bash

我需要创建一个文件,将文件夹中的所有文件列入文本文件,以及逗号和后面的数字15。例如

我的文件夹有video.mp4, video2.mp4, picture1.jpg, picture2.jpg, picture3.png

我需要将文本文件读取如下:

video.mp4,15
video2.mp4,15
picture1.jpg,15
picture2.jpg,15
picture3.png,15

没有空格,每行只有filename.ext,15。我正在使用树莓派。我知道命令ls > filename.txt会将所有文件名放入一个文件夹中,但是如何在每行之后得到一个15?

由于

5 个答案:

答案 0 :(得分:2)

bash 单行

page.libraryPath

为避免在每次迭代时打开输出文件,您可以使用for f in *; do echo "$f,15" >> filename.txt; done 重定向整个输出:

> filename.txt

答案 1 :(得分:1)

你需要做这样的事情:

#!/bin/bash
for i in $(ls folder_name); do 
   echo $i",15" >> filename.txt; 
done 

可以在一行中执行此操作,但是,如果要创建脚本,请从长远来看考虑代码可读性。

编辑1:更好的解决方案

正如@ CristianRamon-Cortes在下面的评论中所建议的那样,你不应该依赖ls的输出,因为本讨论中解释了这些问题:why not parse ls。因此,以下是您应该如何编写脚本:

#!/bin/bash
cd folder_name 
for i in *; do 
   echo $i",15" >> filename.txt; 
done 

如果您已经在文件夹中,则可以跳过部分cd folder_name

编辑2:增强型解决方案:

正如@kusalananda所建议的,你最好在完成后重定向,以避免在for循环的每次迭代中打开文件,所以脚本将如下所示:

#!/bin/bash
cd folder_name 
for i in *; do 
   echo $i",15"; 
done >  filename.txt

答案 2 :(得分:1)

$ printf '%s,15\n' *
picture1.jpg,15
picture2.jpg,15
picture3.png,15
video.mp4,15
video2.mp4,15

如果这些是目录中的唯一文件,这将有效。格式说明符%s,15\n将应用于每个printf的参数(当前目录中的名称),并且将附加,15输出(和换行符)

如果还有其他文件,那么无论是否存在这样调用的文件,以下内容也会起作用:

$ printf '%s,15\n' video.mp4  video2.mp4  picture1.jpg  picture2.jpg  "whatever this is"
video.mp4,15
video2.mp4,15
picture1.jpg,15
picture2.jpg,15
whatever this is,15

或者,在所有MP4,PNG和JPEG文件上:

$ printf '%s,15\n' *.mp4 *.jpg *.png
video.mp4,15
video2.mp4,15
picture1.jpg,15
picture2.jpg,15
picture3.png,15

然后将其重定向到printf ...as above... >output.txt的文件。

如果您正在使用Bash,那么这将不会使用任何外部实用程序,因为printf内置于shell中。

答案 3 :(得分:0)

没有循环的解决方案:

ls | xargs -i echo {},15 > filename.txt

答案 4 :(得分:0)

只有1个命令行使用2个msr命令重复(-r)搜索特定文件:

msr -rp your-dir1,dir2,dirN -l -f "\.(mp4|jpg|png)$" -PAC | msr -t .+ -o '$0,15' -PIC > save-file.txt

  • 如果您想按时间排序,请将--wt添加到第一个命令,例如:msr --wt -l -rp your-dirs
  • 按大小排序?添加--sz但如果同时使用--sz--wt,则只有前一个有效。
  • 如果要排除某个目录,请添加如下:--nd "^(test|garbage)$"
  • \r\n中移除尾save-file.txtmsr -p save-file.txt -S -t "\s+$" -o "" -R

在我的开放项目https://github.com/qualiu/msr msr.exe目录中查看msr.gcc48 / tools等。