나는 이것을 가지고있다:
#!/bin/bash
for file in `find . -type d`
do
echo $file
done
라는 디렉토리만 있는 경우 My Directory
출력은 다음과 같습니다.
My
Directory
어떻게 해결할 수 있나요?
이는 echo $file
일시적일 뿐입니다. 또한 디렉터리에서 작동하는 다른 코드도 있습니다.
답변1
아래와 같은 조각들...
find . -type d | while read dir; do echo $dir; done
.
./my dir
수행 중인 작업에 따라 의 옵션과 find
을 사용하는 것이 더 나을 수도 있습니다 .-print0
xargs -0
얻은 코드는 인용되지 않은 출력을 가져와 이를 반복할 find
단어 목록(공백으로 구분)으로 사용합니다 .for
답변2
for
루프를 사용하는 대신 while
다음을 사용하십시오.
find . -type d -print0 | while read -d '' -r dir; do echo "$dir"; done
옵션은 print0
파일/디렉토리 이름 끝에 NULL 문자(개행 문자 대신)를 인쇄하고 read -d ''
이를 올바르게 해석합니다.
답변3
예제에서는 "$file"을 사용할 수 있습니다.
답변4
답변에 답하기 전에 다음 두 가지 질문을 읽어 보시기 바랍니다.
문제의 경우 루프가 필요하지 않으며 for
직접 찾으십시오.
find -type d
더 많은 작업을 수행하려면 -exec
다음 옵션을 사용하세요(또는 지원이 -execdir
있는 경우 find
).
find -type d -exec ... +