正在加载

shell获取文件名不带后缀(linux shell 如何获取文件名)

  • 作者: 李颖熙
  • 发布时间:2024-06-15


1、shell获取文件名不带后缀

Shell 获取文件名不带后缀

在 Shell 脚本中,经常需要获取文件或路径的文件名,但有时只需要文件名而不带后缀。为此,可以使用以下方法:

1. basename 命令:

shell

filename=$(basename "/path/to/file.txt")

echo $filename

输出:file

basename 命令从路径中剥离出文件名,但不包括任何后缀。

2. sed 命令:

```shell

filename=$(echo "/path/to/file.txt" | sed 's/\.[^.]$//')

echo $filename

输出:file

```

sed 命令使用正则表达式匹配文件路径中的点(.)及其后的所有非点字符,并用空字符串替换它们。

3. awk 命令:

```shell

filename=$(echo "/path/to/file.txt" | awk -F'.' '{print $1}')

echo $filename

输出:file

```

awk 命令使用 -F 选项指定点(.)作为分隔符,然后打印第一个字段($1)。

4. 参数展开:

```shell

filename=${file%.txt}

echo $filename

输出:file

```

参数展开使用 % 运算符从文件名中删除特定后缀。

示例:

```shell

!/bin/bash

获取当前目录中所有文件名

files=$(ls)

遍历文件并获取文件名不带后缀

for file in $files

do

filename=${file%.txt}

echo "$filename"

done

```

以上脚本遍历当前目录中的文件,并使用参数展开获取每个文件的文件名不带后缀。

2、linux shell 如何获取文件名

Linux shell 提供了多种方法来获取文件名。

1. $0 变量:包含当前正在运行的脚本或命令的文件名。

2. basename 命令:从路径中提取文件名,删除目录部分。例如:

```shell

basename /path/to/file.txt

输出:file.txt

```

3. dirname 命令:从路径中提取目录部分,删除文件名。例如:

```shell

dirname /path/to/file.txt

输出:/path/to

```

4. readlink -f 命令:解析符号链接并返回实际的文件路径。例如:

```shell

readlink -f /path/to/symlink.txt

输出:/actual/path/to/file.txt

```

5. stat 命令:获取文件信息,包括文件名。例如:

```shell

stat /path/to/file.txt | grep "File:"

输出:File: /path/to/file.txt

```

6. ls -l 命令:列出文件详细信息,包括文件名。例如:

```shell

ls -l /path/to/file.txt

输出:-rw-r--r-- 1 user group 100 2023-03-08 14:35 file.txt

```

7. file 命令:确定文件的类型,并显示文件名。例如:

```shell

file /path/to/file.txt

输出:/path/to/file.txt: ASCII text

```

选择哪种方法取决于你的具体要求和需要处理的路径类型。

3、shell获取文件确定编码方式

4、shell获取文件夹下的文件名

如何用 Shell 获取文件夹中的文件名

在命令行操作中,获取某一文件夹下的所有文件名是一个常见需求。在 Shell 环境下,可以使用以下方法实现:

1. find 命令

`find` 命令可以递归搜索指定目录下的文件。使用 `-name` 选项可以在搜索结果中指定文件名模式。例如:

```shell

find /path/to/directory -name ".txt"

```

这将列出 `/path/to/directory` 目录及其子目录下所有以 `.txt` 结尾的文件名。

2. ls 命令

`ls` 命令可以列出指定目录下的文件。使用 `-p` 选项可以显示文件名的后缀,这有助于过滤特定类型的文件。例如:

```shell

ls -p /path/to/directory | grep ".txt$"

```

这将列出 `/path/to/directory` 目录及其子目录下所有以 `.txt` 结尾的文件名。

3. globstar(`)

一些 Shell,如 Bash 和 Zsh,支持 globstar(`)模式。这是一种递归的 glob 模式,可以匹配任意数量的子目录。例如:

```shell

echo /path/to/directory//txt

```

这将匹配 `/path/to/directory` 目录及其子目录下所有以 `.txt` 结尾的文件名。

注意:

这些方法获取的是文件名,不是文件路径。

如果文件夹中包含隐藏文件,可以使用 `-a` 选项显示隐藏文件。

globstar(`)模式可能在所有 Shell 中不受支持。