디렉토리에 있는 파일 목록을 얻는 방법

디렉토리에 있는 파일 목록을 얻는 방법

폴더 안에 파일 이름을 저장하기 위해 배열/목록을 만들려고 합니다. 다음 명령은 알 수 없는 이유로 생성됩니다 :. 어떻게 제거할 수 있습니까 :?

> a=$(ls split*)
> echo $a
split_sam.o4433568 split_sam.o4433616 split_sam.o4441795 split-data-1:

답변1

) 명령 $(ls split*번호만들다모든 파일 이름 - 다행히도! 또한 배열을 생성하지 않습니다. 무엇했다do는 와일드카드를 사용하여 호출한 다음 모든 결과 출력을 함께 붙여넣고(각 파일 이름 사이의 줄 바꿈을 제거 ls하고 끝에 추가) 해당 조합을 변수에 할당합니다. 나중에 전화 하면split*lsecho $a추가의원하지 않는 일부 처리가 발생합니다. 변수의 내용은 공백($IFS) 및 와일드카드 확장으로 추가로 분할됩니다. 운이 좋다면, 예를 들어 split space file또는 split more*!

혼란의 원인은 split-data-1:해당 디렉토리에 호출된 파일이 있고 그 파일 ls이 사용자에게 다시 전달된다는 것입니다.

대신, 실제로 원하는 파일에 맞는 와일드카드를 찾고 간단한 배열 할당을 사용하고 싶습니다.

a=(split_sam*)

또는

a=(split*)

원래 작성하신 대로 split-data-1:파일은 계속 포함됩니다.

그런 다음 파일을 반복하거나 전체적으로 작업할 수 있습니다.

for file in "${a[@]}"
do
  ls -d -- "$file"
done

또는

ls -d -- "${a[@]}"

관련 정보