Linux系统中获取路径的文件名的方法

Linux系统中获取路径的文件名的方法,第1张

这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下

代码如下:

[[email protected]

]#basename

/root/aaa/bbb/dabu.txt

显示:

代码如下:

dabu.txt

#获取路径的文件名

shell脚本中如何获得脚本文件所在路径?

方法一:

代码如下:

[[email protected]

]#DIR=$(cd

"$(dirname

"$0")"

pwd)

[[email protected]

]#echo

$DIR

但是像这种dirname

"$0"这种写法,在遇到source命令时会得到错误的结果。

方法二:

代码如下:

[[email protected]

]#echo

"$(

cd

"$(

dirname

"${BASH_SOURCE[0]}"

)"

&&

pwd

)"

上面一行命令可以获得脚本的绝对轮径,无论你在何处调用这个脚本。

但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:

代码如下:

SOURCE="${BASH_SOURCE[0]}"

while

[

-h

"$SOURCE"

]

do

#

resolve

$SOURCE

until

the

file

is

no

longer

a

symlink

DIR="$(

cd

-P

"$(

dirname

"$SOURCE"

)"

&&

pwd

)"

SOURCE="$(readlink

"$SOURCE")"

[[

$SOURCE

!=

/*

]]

&&

SOURCE="$DIR/$SOURCE"

#

if

$SOURCE

was

a

relative

symlink,

we

need

to

resolve

it

relative

to

the

path

where

the

symlink

file

was

located

done

DIR="$(

cd

-P

"$(

dirname

"$SOURCE"

)"

&&

pwd

)"

也可与source,bash

-c命令使用

但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH

陷阱的文章。想理解它如何其作用的,可以运行下面的代码

代码如下:

#!/bin/bash

SOURCE="${BASH_SOURCE[0]}"

while

[

-h

"$SOURCE"

]

do

#

resolve

$SOURCE

until

the

file

is

no

longer

a

symlink

TARGET="$(readlink

"$SOURCE")"

if

[[

$SOURCE

==

/*

]]

then

echo

"SOURCE

'$SOURCE'

is

an

absolute

symlink

to

'$TARGET'"

SOURCE="$TARGET"

else

DIR="$(

dirname

"$SOURCE"

)"

echo

"SOURCE

'$SOURCE'

is

a

relative

symlink

to

'$TARGET'

(relative

to

'$DIR')"

SOURCE="$DIR/$TARGET"

#

if

$SOURCE

was

a

relative

symlink,

we

need

to

resolve

it

relative

to

the

path

where

the

symlink

file

was

located

fi

done

echo

"SOURCE

is

'$SOURCE'"

RDIR="$(

dirname

"$SOURCE"

)"

DIR="$(

cd

-P

"$(

dirname

"$SOURCE"

)"

&&

pwd

)"

if

[

"$DIR"

!=

"$RDIR"

]

then

echo

"DIR

'$RDIR'

resolves

to

'$DIR'"

fi

echo

"DIR

is

'$DIR'"

在 Linux 系统下,可以使用 ls 命令来获取文件夹内所有文件的名称。如果想要获取文件大小和最后修改时间,可以使用 ls -l 命令。这会列出文件的详细信息,包括文件大小和最后修改时间。示例命令如下:

ls -l /path/to/folder

其中 /path/to/folder 是文件夹的路径。

或者使用 find /path/to/folder -type f -printf '%s %p %TY-%Tm-%Td %TT\n' 这样能获取文件大小和最后修改时间


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8800321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-21
下一篇 2023-04-21

发表评论

登录后才能评论

评论列表(0条)

保存