如何判断文件名是否是目录,而不是文件

时间:2013-07-15 11:47:15

标签: bash unix

我需要检查传递给bash脚本的参数是文件夹还是文件。它可能会也可能不会以/

结尾
xpath=$(dirname "$1")
如果没有尾随/

会删除目录名

由于

2 个答案:

答案 0 :(得分:1)

给定文件a和目录t

您可以使用命令file

$ file t
t: directory
$ file a
a: ASCII text

-f(文件)和-d(dir)标记。

$ [ -f a ] && echo "this is a file"
this is a file
$ [ -f t ] && echo "this is a file"
$
$ [ -d t ] && echo "this is a dir"
this is a dir
$ [ -d a ] && echo "this is a dir"
$

答案 1 :(得分:1)

在路径中使用“test -f”或“test -d”。虽然“dirname”总是返回目录的名称,但永远不会返回文件名,但是它可能会返回文件所在的目录,或者目录所在的目录,具体取决于参数是文件还是目录。 “basename”返回文件名或目录,而不包含它所在的路径。