find 대신 ls를 사용하는 방법은 무엇입니까?

find 대신 ls를 사용하는 방법은 무엇입니까?

나는 find다음 구조의 파일을 대상으로 일부 파일을 반복하는 데 사용하고 있습니다.

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

EDI_목표는 middle 로 시작하고 포함된 파일을 찾는 것입니다 TARGET-TYPE. find 명령은 다음과 같습니다.

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

find루프를 사용하여 출력을 사용할 예정이므로 and를 사용하고 싶지 않습니다 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 쉘 우분투 최근 LTS.

관련 정보