最近我在面试中被问到了一个问题
需要在Unix中找到一个文件,文件名为*(此处扩展名无关紧要)
我回答说文件名在任何文件系统中都不能以*开头。 他说这是可能的
请帮我解决这个问题
答案 0 :(得分:2)
唯一的illegal characters in file names是NUL(\0
)和斜杠(/
)。其他任何东西都有效。
*
不是文件名中的特殊字符,但它是shell。您可以将其转义以防止shell将其视为glob。
ls '*'
ls "*"
ls \*
你可以通过保留未转义的glob来将它与glob混合。
ls '*'.*
ls "*".*
ls \*.*
答案 1 :(得分:1)
答案 2 :(得分:0)
演示 touch
- ls
步骤({{1} } char应该用引号括起来或用*
转义以防止shell globbing ):
\
答案 3 :(得分:0)
*是shell的一个特殊字符,用于解释您的命令,它在文件名中并不特殊。为了使用' *'在文件名中,您需要在shell命令中将其转义。
如果文件可能位于子目录中,您可以使用find:
找到它$ mkdir -p given/directory
$ touch given/directory/\*
$ find . -name '\*' -print
./given/directory/*
$ rm given/directory/\*
$ find . -name '\*' -print
$