當前位置:首頁 » 操作系統 » linux提取文件名

linux提取文件名

發布時間: 2023-07-06 17:16:53

linux系統中獲取路徑的文件名的方法

這篇文章主要介紹了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如何查找某個文件名

題主你好,

linux中,最常用的查找文件命令是find.

最常用的查找文件方式有兩種:

a.精確查找文件,即提供被查找文件的完整名稱.

    舉例: 我在/root/ok/tmp文件夾下有兩個文件, 名為: x.t和y.txt

    可以看到x.t和x.txt這兩個文件都找到了, 並且給的是絕對路徑.

寫在最後: 當然,上面只是find命令的一個小小的用法, 題主看看利用上面的方法是否可以滿足要求, 如果不滿足, 題主可以追問, 詳細的說一下題主的場景, 我再給出解決方案.

希望可以幫到題主,歡迎追問.

⑶ Linux批量提取文件名

簡單的獲取文件名的話,可以輸入命令:ls,如果需要把整個磁碟所有文件名字打出的話,需要寫個腳本,循環遞歸下。

⑷ linux 如何提取文件夾名

提取當前文件夾名稱
可以結合使用pwd命令和basename命令,pwd命令返回當前工作路徑,basename命令去掉前導的目錄部分後列印「名稱」。
$ basename `pwd`
注意:pwd兩側為反引號`,作用是運行兩個反引號之間的命令,並且將命令運行的結果返回。

提取當前文件夾的所有子文件夾
可以使用find命令,設置查詢文件類型參數為-type為目錄d,還可以設置-maxdepth參數為1,不查詢二級子目錄。
$ find . -type d -maxdepth 1

熱點內容
可以上傳視頻網站 發布:2025-03-18 01:29:17 瀏覽:931
mysql密碼忘記了怎麼 發布:2025-03-18 01:23:00 瀏覽:857
java與oracle 發布:2025-03-18 01:18:05 瀏覽:704
怎麼給win7電腦文件加密 發布:2025-03-18 01:10:41 瀏覽:988
python生成隨機數 發布:2025-03-18 01:10:40 瀏覽:94
手機存儲卡怎麼設置 發布:2025-03-18 01:04:26 瀏覽:213
背演算法好處 發布:2025-03-18 01:02:18 瀏覽:57
win7添加刪除在哪個文件夾 發布:2025-03-18 01:02:13 瀏覽:705
蘋果寫源碼 發布:2025-03-18 00:50:47 瀏覽:363
生存源碼 發布:2025-03-18 00:50:46 瀏覽:351