如何使用 ls 而不是 find?

如何使用 ls 而不是 find?

我用来find循环一些文件,目标是具有这种结构的文件:

EDI_2016-03-03_09-45-09_TARGET-TYPE_4830_453a2cbb-b8d4-4982_6549_6116_xazfzeg.PDF

EDI_目标是找到以 开头并包含在中间的文件TARGET-TYPE,使用 find 命令是:

find . -name "EDI_*_TARGET-TYPE*"

因为我要使用带有循环的输出,所以我不想使用find和使用ls(我在带有空格和查找的文件方面遇到了很多问题)。

这有效:ls EDI_

  • 不起作用:ls EDI_*_TARGET-TYPE*

  • 这不起作用:ls "EDI_*_TARGET-TYPE*"

  • 这不起作用:ls 'EDI_*_TARGET-TYPE*'

我真的不知道为什么,如果有人可以将find命令翻译给我,那就太好了。

答案1

我会做什么:

for file in EDI_*_TARGET-TYPE*; do
    do_something "$file"
done

答案2

$ touch EDI_2016-03-03_0945-09_TARGET-TYPE_4830_453a2cbb.pdf
$ touch EDI_2016-03-03_0945-09_TARGET-TYPE_4830hhh_453a2cbb.pdf
$ ls EDI_*_TARGET-TYPE*
EDI_2016-03-03_09-45-09_TARGET-TYPE_4830_453a2cbb.pdf
EDI_2016-03-03_09-45-09_TARGET-TYPE_4830hhh_453a2cbb.pdf

对我有用。 Bash shell Ubuntu 最近的 LTS。

相关内容