linux shell脚本中如何获取文件的绝对路径?readlink可以么?
脚本中想实现的功能是:指定给函数一个路径,函数会遍历这个路径下的所有文件如果遇到文件夹递归进入文件夹执行函数,如果遇到文件则输出文件的绝对路径。。我用的是readlink...
脚本中想实现的功能是:指定给函数一个路径,函数会遍历这个路径下的所有文件 如果遇到文件夹递归进入文件夹执行函数,如果遇到文件则输出文件的绝对路径。。我用的是readlink -f ‘文件’ 但是获取到的文件绝对路径是错的,里面包含了脚本所在文件夹的路径,请问我该怎么改?
比如说脚本所在路径是/home/test ,我给传给函数的路径是/root/file file文件夹里面有file1和file2 那么我的脚本会输出/hong/test/file1 和/home/test/file2 但是我想要的是/root/file/file1 和 /root/file/file2啊
send_file="/tool/"
function send_file(){
if [ `echo $1 | grep "pcap"` ]
then
echo "file is `readlink -f $1`!!"
elif [ -d $1 ]
then
for each_file in `ls $1`
do
send_file $each_file
done
fi
}
for packet in `ls $send_file`
do
send_file $send_file
done
这是我的代码 我想列出tool里面的pcap文件 但是要输出绝对路径 展开
比如说脚本所在路径是/home/test ,我给传给函数的路径是/root/file file文件夹里面有file1和file2 那么我的脚本会输出/hong/test/file1 和/home/test/file2 但是我想要的是/root/file/file1 和 /root/file/file2啊
send_file="/tool/"
function send_file(){
if [ `echo $1 | grep "pcap"` ]
then
echo "file is `readlink -f $1`!!"
elif [ -d $1 ]
then
for each_file in `ls $1`
do
send_file $each_file
done
fi
}
for packet in `ls $send_file`
do
send_file $send_file
done
这是我的代码 我想列出tool里面的pcap文件 但是要输出绝对路径 展开
展开全部
传给函数的路径是/root/file,如果这是函数的第一个参数,那么函数中可以用 $1 获取。
得到文件名file1和file2后,echo "$1/file1" 就输出/root/file/file1,echo "$1/file2" 输出/root/file/file2。
得到文件名file1和file2后,echo "$1/file1" 就输出/root/file/file1,echo "$1/file2" 输出/root/file/file2。
更多追问追答
追问
可是如果多层文件夹的话,里层的函数调用的参数就不是绝对路径了,比如说在当前路径,有个文件夹,那么在此调用函数的参数就仅仅是文件夹名字了啊。。linux下没有直接显示文件的绝对路径的办法么?
追答
没有代码,不清楚你是怎么实现的。
难道你用了 cd 逐层进入目录?其实不推荐这样用。
不过,pwd命令可以得到当前路径,然后再与文件名连接。
echo `pwd`/file1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询