Linux:获取目录下所有文件名
在 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 文件'