Linux shell之提取文件名和目录名

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

1、提取文件名
[root@localhost log]# var=/dir1/dir2/file.txt
[root@localhost log]# echo ${var##*/}
file.txt
2、提取后缀
[root@localhost log]# echo ${var##*.}
txt
3、提取不带后缀的文件名,分两步
[root@localhost log]# tmp=${var##*/}
[root@localhost log]# echo $tmp
file.txt
[root@localhost log]# echo ${tmp%.*}
file
4、提取目录
[root@localhost log]# echo ${var%/*}
/dir1/dir2

使用文件目录的专有命令basename和dirname

1、提取文件名,注意:basename是一个命令,使用 (), ( ) , 而 不 是 {}
[root@localhost log]# echo $(basename $var)
file.txt
2、提取不带后缀的文件名
[root@localhost log]# echo $(basename $var .txt)
file
3、提取目录
[root@localhost log]# dirname $var
/dir1/dir2
[root@localhost log]# echo $(dirname $var)
/dir1/dir2
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴为您服务!下面是一个bash脚本,用于将当前目录中的txt文件压缩成与文件名相同的zip压缩包: #!/bin/bashfor file in *.txt; do zip -j "${file%.*}".zip "$file" done ### 回答2: 下面是一个可以实现你所描述的功能的Linux shell脚本: ```shell #!/bin/bash # 遍历当前目录下的所有txt文件 for file in *.txt; do # 获取文件名(不包含扩展名) filename=$(basename "$file" .txt) # 创建对应的zip压缩包,并将txt文件添加到压缩包中 zip "$filename.zip" "$file" # 提示压缩完成 echo "已成功压缩$file到$filename.zip" done ``` 请将上述脚本保存为一个文件(如compress.sh),然后使用chmod命令给予执行权限: ```shell chmod +x compress.sh ``` 之后,在需要执行该脚本的目录下打开终端,并执行以下命令来运行脚本: ```shell ./compress.sh ``` 脚本会自动将该目录下的所有txt文件分别压缩成与txt文件名相同的zip压缩包,并输出相应的提示信息。 ### 回答3: 你好!下面是一个简单的Shell脚本,可以实现将当前目录下的所有txt文件分别压缩为与它们的文件名相同的zip压缩包: ```bash #!/bin/bash # 遍历当前目录下的所有txt文件 for file in *.txt; do # 提取文件名(不包括扩展名) filename=$(basename "$file" .txt) # 将txt文件压缩为zip文件(与文件名相同) zip "$filename.zip" "$file" # 打印处理的文件信息 echo "已压缩文件:$file --> $filename.zip" done ``` 请将以上代码保存为`compress.sh`文件,并在命令行中运行`bash compress.sh`命令,即可执行该脚本。执行脚本后,它将遍历当前目录下的所有txt文件,将每个txt文件压缩为与其文件名相同的zip压缩包,并打印出处理过程的信息。 希望这能帮到你!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值