需求:在工作过程中,经常需要copy文件名称,文件夹又比较深,所以想做一个小工具直接把项目中的文件名称列出来,输出到一个文本文件中。
其实很简单,在cmd下用dir/s/b > list.txt 可以实现列出所有文件,但是带着文件路径,不符合要求。因此考虑用shell脚本实现。
ls -lR | grep '^-' | awk '{print $9}' > filenamelist.txt
解释说明:
1、ls -l可以列出当前文件夹下的文件夹及文件名称
2、ls -lR 可以递归显示子文件夹的所有文件
3、通过上图发现所有的文件开头都是以‘-’开头,使用命令:ls -lR | grep '^-' 过滤出所有文件
4、通过上图发现文件为第9部分,使用命令ls -lR | grep '^-' | awk '{print $9}' 输出所有文件
5、将文件输出到制定的文件中,使用命令ls -lR | grep '^-' | awk '{print $9}' > filenamelist.txt
6、把命令放到readfilename.sh文件中。(记得写头文件#!/bin/bash)试运行,执行成功
后记,把这么简单的命令解释这么多行也是没谁了。