在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