Linux shell遍历文件夹——提取文件名和目录名

举报
墨理学AI 发表于 2022/01/11 01:05:51 2022/01/11
【摘要】 🥇 版权: 本文由【墨理学AI】原创、在CSDN首发、感谢查阅❤️ 如果文章对你有帮助、欢迎一键三连 🍖 早期博文,质量有限,敬请理解 shell 遍历文件夹内所有文件 funct...
  • 🥇 版权: 本文由【墨理学AI】原创、在CSDN首发、感谢查阅
  • ❤️ 如果文章对你有帮助、欢迎一键三连
  • 🍖 早期博文,质量有限,敬请理解
  • shell 遍历文件夹内所有文件
function getdir(){
    echo $1
    for file in $1/*
    do
    if test -f $file
    then
        echo $file
        arr=(${arr[*]} $file)
    else
        getdir $file
    fi
    done
}
getdir /wls
echo ${arr[@]}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

使用${} 提取字符串, 用于字符串的读取,提取和替换功能:

  • 1、提取文件名
 var=/dir1/dir2/file.txt
 echo ${var##*/}

  
 
  • 1
  • 2

file.txt

  • 2、提取后缀
echo ${var##*.}
txt

  
 
  • 1
  • 2
  • 3、提取不带后缀的文件名,分两步
tmp=${var##*/}
echo $tmp
file.txt
echo ${tmp%.*}
file

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 4、提取目录
echo ${var%/*}
/dir1/dir2
 

  
 
  • 1
  • 2
  • 3

使用文件目录的专有命令basename和dirname
1、提取文件名,注意:basename是一个命令,使用 ( ) , 而 不 是 (), 而不是 (),{}

echo $(basename $var)
file.txt

  
 
  • 1
  • 2

2、提取不带后缀的文件名

echo $(basename $var .txt)
file

  
 
  • 1
  • 2

3、提取目录

dirname $var
/dir1/dir2
echo $(dirname $var)
/dir1/dir2

  
 
  • 1
  • 2
  • 3
  • 4

9-6

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/84796054

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。