学而实习之 不亦乐乎

Linux:获取目录下所有文件名

2022-07-09 08:06:43

在 Linux 下获取目录内所有文件,可以通过命令行,也可以通过 shell 脚本来实现。

一、使用命令

linux下递归列出目录下的所有文件名(绝对路径,不包括目录)

ls -lR |grep -v ^d|awk '{print $9}' | sed "s:^:`pwd`/:"

linux下递归列出目录下的所有文件名(绝对路径,不包括目录),并且去掉空行

ls -lR |grep -v ^d|awk '{print $9}' |tr -s '\n' | sed "s:^:`pwd`/:"

如需要将结果写入文件中只需在命令后添加 > 文件名
如:

ls -lR |grep -v ^d|awk '{print $9}' |tr -s '\n' > list.txt

二、shell 脚本

获取当前正在执行脚本的绝对路径

basepath=$(cd `dirname $0`; pwd)

dirname $0,取得当前执行的脚本文件的父目录
cd `dirname $0`,进入这个目录(切换当前工作目录)
pwd,显示当前工作目录(cd执行后的)

将以下代码保存为 ssh 脚本,执行即可获取到所有的文件名称。

#!/bin/bash
function getdir(){
    for element in `ls $1`
    do  
        dir_or_file=$1"/"$element
        if [ -d $dir_or_file ]
        then 
            getdir $dir_or_file
        else
            echo $dir_or_file
        fi  
    done
}
root_dir=$(cd `dirname $0`; pwd)
getdir $root_dir>list.txt
echo 'END!'
echo '请查看当前目录下 list.txt 文件'