如果只用find命令,不借助‘grep’或‘awk’命令,find命令是否可以实现仅输出文件名字呢?
有人说用‘ls -1’就可以,确实,在普通的应用场合,用‘ls’这个命令足以。但是,find携带了更多的控制项,例如,大小-size、修改时间-cmin等,如果在满足搜索条件时,仅输出文件名,而非带路径输出,该如何做呢?
一开始并没有直接想出来,后来搜索网上文章,有些提到的,也是继续使用其他shell命令,例如,‘grep’或‘awk’。总感觉不够理想、不够直接、不够原生,还是看看man帮助吧!
后来发现,仅用‘find’命令,加上'-printf'控制项就可以达到目的,它也足够原生!
# 用'ls'命令仅列出文件名
ls -1
# 用'find'命令仅列出文件名,注意单引号是必须的
find /path/to/getfilenames -name '*.tar' -printf '%f\n'
# 利用*nix体系行操作的特点,可以将命令输出装入shell数组
filenames=($(ls -1))