相关疑难解决方法(0)

dirname 和 basename vs 参数扩展

是否有任何客观理由偏爱一种形式而不是另一种形式?性能、可靠性、便携性?

filename=/some/long/path/to/a_file

parentdir_v1="${filename%/*}"
parentdir_v2="$(dirname "$filename")"

basename_v1="${filename##*/}"
basename_v2="$(basename "$filename")"

echo "$parentdir_v1"
echo "$parentdir_v2"
echo "$basename_v1"
echo "$basename_v2"
Run Code Online (Sandbox Code Playgroud)

产生:

/some/long/path/to
/some/long/path/to
a_file
a_file
Run Code Online (Sandbox Code Playgroud)

(v1 使用 shell 参数扩展,v2 使用外部二进制文件。)

shell shell-script filenames basename variable

24
推荐指数
3
解决办法
3万
查看次数

删除文件路径和扩展名,只保留文件名

我有一个文件路径,/home/test/domain/example.txt 它的长度和文件扩展名也可以完全不同。例如:

/reallylongpath/example/longername.vb
Run Code Online (Sandbox Code Playgroud)

我需要删除扩展名“.” 之后,我需要删除除文件名以外的所有内容。上面的两个例子我需要examplelongername

我假设要转到最后一次出现的“/”,但不确定。

我希望使用 bash 来做到这一点。

bash shell-script

3
推荐指数
1
解决办法
1万
查看次数

删除bash变量中最后一个斜杠之前的所有内容

myVar在 bash 中有一个变量,其中包含一个长字符串,如下所示:

-rw-rw-rw- root/root 16 2018-02-12 10:03 foo_tar/baz1234_
Run Code Online (Sandbox Code Playgroud)

我想删除myVar最后一个斜杠(包括最后一个斜杠)之前的所有内容,这样myVar最终只存储baz1234_. 如何删除所有内容并将结果存储在变量中?

我遇到过处理 sed 的解决方案,但那些解决文件处理的问题,因此我的问题。

scripting bash tar sed

2
推荐指数
1
解决办法
6302
查看次数

标签 统计

bash ×2

shell-script ×2

basename ×1

filenames ×1

scripting ×1

sed ×1

shell ×1

tar ×1

variable ×1