linux find命令不必要的数据

标签 linux bash find

我正在尝试编写简单的 bash 脚本,但我受困于 find 命令。

当我键入 find 时。 zad*,我得到如下输出:

.
./lab2.sh~
./#zad2.sh#
./zad2.sh~
./zad1a.sh
./zad2.sh
./lab2.sh
./Azad2.sh~
./cdlinux.ftp.log
./Azad2.sh
./zad1a.sh~
./zad1.sh
./cdlinux.www.log
./zad1.sh~
zad1a.sh
zad1a.sh~
zad1.sh
zad1.sh~
zad2.sh
zad2.sh~

为什么它会列出我文件夹中的所有文件(在文件名前加上 ./),然后我得到正确的查找结果。有没有办法删除那个 ./ 输出?使用 sed 命令并非在所有情况下都有效(当搜索路径与 . 不同时)。

最佳答案

您必须使用 -name 标志来指定要搜索的名称,并将模式括在引号中,这样 bash 就不会对通配符 * 执行自动扩展在传递给 find 之前:

 find . -name "zad*"

此外,您不需要使用 指定 cwd 路径。

使用:

 find -name "zad*"

应该工作得很好 =)

关于linux find命令不必要的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100991/

相关文章:

在汇编中调用 printf() 会导致 'floating point exception'

regex - 打印相关符号之前的所有内容,并在相关符号之后保留 1 个字符

Bash 如何检测传递给脚本的缺失强制参数

bash - 如何制作一个脚本来对一个文件进行多个 grep?

bash - 如何使用文本文件中的变量通过ssh将命令通过ssh传递到dd-wrt?

linux - 如何在oracle linux 7.2中安装postgresql

python - 将 CSV 匹配行与 Python 进行比较

python - 在数据框的特定列中查找第一次出现的非整数

arrays - Matlab,找到最小值的索引,条件是它必须为负

linux - 从 "find"输出中删除特殊字符