如何在给定目录中使用文件名*在unix中查找文件?

时间:2017-11-03 17:09:11

标签: unix

最近我在面试中被问到了一个问题

需要在Unix中找到一个文件,文件名为*(此处扩展名无关紧要)

我回答说文件名在任何文件系统中都不能以*开头。 他说这是可能的

请帮我解决这个问题

4 个答案:

答案 0 :(得分:2)

唯一的illegal characters in file names是NUL(\0)和斜杠(/)。其他任何东西都有效。

*不是文件名中的特殊字符,但它是shell。您可以将其转义以防止shell将其视为glob。

ls '*'
ls "*"
ls \*

你可以通过保留未转义的glob来将它与glob混合。

ls '*'.*
ls "*".*
ls \*.*

答案 1 :(得分:1)

你只需要用\来转义*,所以你可以使用:

{{1}}

这将搜索名称为" *"的文件。在当前目录中没有考虑扩展名。

Example

答案 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
$