问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用shell获取linux目录下的文件名

发布网友 发布时间:2022-05-06 10:27

我来回答

4个回答

懂视网 时间:2022-05-11 01:07

前言
还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名。这里记录一下实现过程。当然,最后我也会给出官方的做法。(ps:很囧,实现完了才发现原来Bash Shell有现成的函数)

获取文件名
假设给定的路径名为:

/tmp/csdn/zhengyi/test/zhengyi.txt

awk解法

用“/”做分隔符,然后打印出最后的那一部分。实现代码如下

resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk -F "/" '{print $NF}'`

官方解法(basename)
Bash Shell本身提供了basename命令,可以直接获取路径名最后的文件名,实现代码如下:

resFile=`basename /tmp/csdn/zhengyi/test/adb.log`

获取目录名

官方解法(dirname)
Bash Shell本身提供了dirname命令,特别方便,可以直接获取路径对应的目录名,实现代码如下:

dirPath=`dirname /tmp/csdn/zhengyi/test/adb.log`

awk解法

可以灵活的使用分隔符,混合正则表达式:

dirPath=`echo /tmp/csdn/zhengyi/test/adb.log | awk -F '/[^/]*$' '{print $1}'`

awk+for循环的方法:

echo /tmp/csdn/zhengyi/test/adb.log | awk 'BEGIN{res=""; FS="/";}{ for(i=2;i<=NF-1;i++) res=(res"/"$i);} END{print res}'

更多使用Bash Shell获取文件名和目录名的简单方法相关文章请关注PHP中文网!

热心网友 时间:2022-05-10 22:15

获取所有常规文件的文件名并打印出来的脚本listfile.sh如下

#!/bin/bash

dir="/*"
dir=$1$dir
for f in $dir
do
if [ -f $f ]
then
echo $f
fi
done

使用方法:
$ listfile.sh PATH

原理:
PATH参数是路径,将路径后加上“/*”,代表该目录下的所有文件和目录名,利用for循环比较每个文件是否是常规文件( -f比较运算符),若if表达式为真则打印

举例:
ls -l
total 36
-rwxrwxr-x 1 lipeng lipeng 48 Nov 29 20:08 aaa.sh
drwxrwxr-x 2 lipeng lipeng 4096 May 4 2015 byteorder
drwxrwxr-x 8 lipeng lipeng 4096 May 3 2015 hello
-rwxrwxr-x 1 lipeng lipeng 122 Nov 29 20:16 listfile.sh
-rw-rw-r-- 1 lipeng lipeng 177 Aug 1 03:10 main.cpp
drwxrwxr-x 2 lipeng lipeng 4096 Sep 13 16:42 matrix
drwxrwxr-x 5 lipeng lipeng 4096 Apr 28 2015 modbus
drwxrwxr-x 2 lipeng lipeng 4096 Sep 13 10:10 shtest
drwxrwxr-x 2 lipeng lipeng 4096 Sep 16 18:21 test

$ ./listfile.sh .
./aaa.sh
./listfile.sh
./main.cpp

热心网友 时间:2022-05-10 23:33

可能要用的awk

热心网友 时间:2022-05-11 01:08

ls -l
~~~~~~~~~~~~~~~~~~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 那个shell编程是在 linux中vi 什么类型的文件。以前只知道.C和.cpp文件 SHELL脚本中的通配符问题 linux下C++的文件链接问题 在Linux中运行cpp.sh,为什么说command not found 数字2309代表爱情意思 我迟早会让你承认你是我老婆 用数字怎么说? 怎么通过实名认证找回QQ 哪位可以提供绩效考核,和员工手册! 员工手册中的奖罚制度和绩效考核制度有冲突怎么办? 郭文煊的参加比赛 你曾经有过哪些超级失败的演讲? 跪求校园搞笑励志小品(大神们帮帮忙) 超级大学生 赵本山力挺校园小品王 房子台词 梦到在河里游泳捞粉条 &#39;他手捧鲜红的获奖证书,泪水涌出了眼眶。’请你跟据提供的作文结尾,展开想象编一个故事, 全国百强旅行社怎么考核 周公解梦梦见在水里捞稻草 勇敢面对的事作文 小学生语文竞赛获奖感言,就是在里面分享我语文学习的经验(学校举行的)急急 朗诵大赛参赛感言 急急急!!! ksh和bash的异同,持续更新 unix 编写一个脚本 搜索东西的 用gcc&#47;g++如何编译android工程中的.c&#47;.cpp程序,如何查看android工程师.c&#47;.cpp文件需要的依赖及如何解决 请教,修改ro.sf.lcd 小学生端午节与儿童节如何放假放假??? 端午节学校放假问题 端午节放假问题! 端午怎么放假 端午节时法定节假日吗?国家规定有没有放假的? 翻天覆地害百性、相争二九来;猜一动物 十二生肖里什么肖能翻天覆地? 飞利浦剃须刀s7530/43有充电器吗?为什么我买回来发现没有充电器 飞利浦剃须刀7370充电器 毕业生在笔试中应该注意哪些问题?成功面试的原则有哪些 面试、笔试大概会有哪些问题?帮帮忙 了笔试,面试的时候一般问什么问题 面试和笔试一般考什么,有哪些要注意的 有没有游戏测试的面试笔试题分享一下? 求职面试或笔试开放性问题的经典问答哪能找到? 大学记者社团面试,笔试的问题及答案