[英]find filename without directory and extension from inside of a bash scriptfile
[英]Get parent directory name and filename without extension from full filepath in bash?
我的文件路徑很長,例如
/path/to/file/dir1/dir2/file.txt.gz
我有興趣獲取不帶最后擴展名的文件名(即file.txt
)和父目錄的名稱( dir2
,我不想要父目錄的完整路徑,僅是其名稱)。
我該如何在bash中做到這一點?
使用BASH:
s='/path/to/file/dir1/dir2/file.txt.gz'
file="${s##*/}"
file="${file%.*}"
echo "$file"
file.txt
filder="${s%/*}"
folder="${folder##*/}"
echo "$folder"
dir2
使用awk
:
awk -F '/' '{sub(/\.[^.]+$/, "", $NF); print $(NF-1), $NF}' <<< "$s"
dir2 file.txt
要將它們讀入shell變量:
read folder file < <(awk -F '/' '{sub(/\.[^.]+$/, "", $NF);print $(NF-1), $NF}'<<<"$s")
第一部分可以通過basename(1)解決:
$ basename /path/to/file/dir1/dir2/file.txt.gz
file.txt.gz
$
dirname(1)則相反,這不是您想要的,但也許您可以將其用作起點:
$ dirname /path/to/file/dir1/dir2/file.txt.gz
/path/to/file/dir1/dir2
$
當然,您可以隨時使用Perl:
$ perl -E 'do { @p=split m|/|; say $p[-2] } for @ARGV' /path/to/file/dir1/dir2/file.txt.gz
dir2
$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.