web-dev-qa-db-ja.com

パスからディレクトリを抽出

私のスクリプトでは、作業中のファイルのディレクトリが必要です。たとえば、file= "stuff/backup/file.Zip"。変数$fileから文字列 "stuff/backup /"を取得する方法が必要です。

102
Matt
dirname $file

あなたが探しているものです

172
Matthieu
dirname $file

出力します

stuff/backup

これはbasenameの反対です:

basename $file

出力します

file.Zip
42
matchew

directorypathからfilepathを取得するには:

file="stuff/backup/file.Zip"
dirPath=${file%/*}/
echo ${dirPath}
2
Urvin Shah

外部コマンドに依存しないため、Urvin/LuFFyが提案する${file%/*}の使用は技術的に優れています。同じ方法でベース名を取得するには、${file##*/}を実行します。必要な場合を除き、外部コマンドを使用する必要はありません。

file="/stuff/backup/file.Zip"
filename=${1##*/}     # file.Zip
directory=${1%/*}     # /stuff/backup

この方法でもPOSIXに完全に準拠します。それが役に立てば幸い! :-)

2
MageParts

単に$ dirname /home/~username/stuff/backup/file.Zipを使用します

/home/~username/stuff/backup/を返します

1
Nishchay Sharma