一、为在 images 文件夹的照片生成一个文件列表:
find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt
1)find 指令查找指定目录中的文件。 使用格式 : find [指定查找目录] [查找规则] [查找完后执行的action]
具体:find path -option [ -print ] [ -exec -ok command ] {} \;
`pwd` 指的是获得了当前的工作路径,当前路径在caffe-master 的根目录下(如在命令行上输入pwd 显示:/home/k40/caffe-master),所以`pwd`/examples/images指的就是/home/k40/caffe-master/examples/images
查找规则: -type f 指查找的文件为普通文件
-exec [command]{} \; 将查到的文件执行command操作。-exec查找后执行命令的时候不询问用户,直接执行(-ok 询问)。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。此例中的‘command’就是echo。
echo > examples/_temp/temp.txt 指的使用echo命令向examples/_temp/temp.txt文件中写入内容。
echo向文件中输出内容的基本方法是使用IO重定向指令——“>”,默认情况下echo输出到标准输出中,使用>指令可重定向输出到文件中,若文件不存在则创建文件。
所以这条指令为:在/home/k40/caffe-master/examples/images路径下查找所有普通文件(名),并将其输出到examples/_temp/temp.txt文件中。
二、
sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt
sed:是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
sed [-nefri] ‘command’ 输入文本
‘command’ 常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
"s/$/ 0/"中的$:$在正则表达式中表示行尾
所以这条指令为:将examples/_temp/temp.txt文本中的文本按行处理,将每行行尾(\n前)替换为0 并重定向输出到examples/_temp/file_list.txt文本中