在Bash中,如果VAR="/home/me/mydir/file.c"
,我該如何獲得"/home/me/mydir"
?從文件路徑獲取文件目錄路徑
回答
$ export VAR=/home/me/mydir/file.c
$ export DIR=${VAR%/*}
$ echo "${DIR}"
/home/me/mydir
$ echo "${VAR##*/}"
file.c
爲了避免依賴與basename
和dirname
因爲兩者都是POSIX的一部分,所以依賴不應該是一個問題。 – orkoden 2013-11-15 13:50:51
orkoden,你說得對。我的答案的目的是表明沒有義務執行另外兩個過程。 bash是自足的用例。 – 2013-11-19 08:59:18
我正在使用Emmanuel的方法,因爲我想傳遞文件或文件夾名稱,然後計算文件夾路徑。使用這個正則表達式是正確的,而當輸入文件夾時,dirname函數返回父文件夾。 – AnneTheAgile 2013-12-07 19:33:24
如果你關心的目標文件是符號鏈接,首先你可以檢查,並得到原始文件。下面的if子句可以幫助你。
if [ -h $file ]
then
base=$(dirname $(readlink $file))
else
base=$(dirname $file)
fi
在相關說明中,如果只有文件名或相對路徑,dirname
本身不會幫助。對我來說,答案最終爲readlink
。
fname='txtfile'
echo $(dirname "$fname") # output: .
echo $(readlink -f "$fname") # output: /home/me/work/txtfile
然後,您可以將兩者結合起來得到目錄。
echo $(dirname $(readlink -f "$fname")) # output: /home/me/work
如果多於一個路徑組件不存在,則應使用'readlink -m「$ fname」'遞歸地規範給定的名稱 – EDkan 2016-09-20 12:13:09
我在玩這個,想出了一個替代方案。
$ VAR=/home/me/mydir/file.c
$ DIR=`echo $VAR |xargs dirname`
$ echo $DIR
/home/me/mydir
我喜歡的部分是很容易擴展備份樹:
$ DIR=`echo $VAR |xargs dirname |xargs dirname |xargs dirname`
$ echo $DIR
/home
下面是我用遞歸微調的腳本。當然,用你想要的目錄替換$ 1。
BASEDIR="$1"
IFS=$'\n'
cd $BASEDIR
for f in $(find . -type f -name ' *')
do
DIR=$(dirname "$f")
DIR=${DIR:1}
cd $BASEDIR$DIR
rename 's/^ *//' *
done
- 1. bat文件獲取目錄路徑
- 2. 獲取目錄文件的路徑
- 3. 在Python中獲取絕對文件路徑的目錄路徑
- 4. 提取路徑到目錄從路徑到文件
- 5. 獲取文件的路徑從項目
- 6. 如何從文件名獲取文件路徑和目錄?
- 7. 從文件路徑獲取文件名
- 8. 如何從批處理腳本中的文件路徑獲取目錄路徑
- 9. 從文檔目錄獲取文件路徑 - Objective-c iOS
- 10. Javascript獲取文件路徑
- 11. 獲取CSS文件路徑
- 12. html5獲取文件路徑
- 13. 獲取文件路徑
- 14. asp:FileUpload獲取文件路徑
- 15. 獲取文件夾路徑
- 16. Symfony獲取文件路徑
- 17. java獲取文件路徑
- 18. 獲取文件的路徑
- 19. 查找圖案目錄路徑從文件路徑
- 20. 從路徑創建文件夾目錄?
- 21. 獲取包含主文件的.class文件的目錄路徑
- 22. 獲取主可執行文件.jar文件的目錄路徑
- 23. Python - 從文件路徑中提取文件夾路徑
- 24. 文件路徑路徑
- 25. 獲取sharedpreferences文件的文件路徑
- 26. 獲取文件路徑的文件名
- 27. RegEx從代碼需要路徑獲取路徑和文件名
- 28. 從文件名獲得文件路徑
- 29. 從沒有完整路徑的目錄中獲取文件名
- 30. 從文件路徑獲取最新創建的目錄
爲什麼圍繞變量名使用括號而不是「$ VAR」? – user658182 2017-07-30 12:34:24
https://stackoverflow.com/questions/8748831/when-do-we-need-curly-braces-around-shell-variables回答上述問題。 – user658182 2017-07-30 12:34:39