mdls
특정 디렉터리와 모든 하위 디렉터리를 반복하고 명령을 사용하여 메타데이터 속성을 별도의 텍스트 파일로 추출하는 bash 스크립트를 작성하려고 합니다 . 공백 및 기타 특수 문자가 포함된 파일 이름이 많기 때문에 내 코드베이스는 "이름에 공백이 있는 파일을 반복하시겠습니까?". 그러나 각 파일 이후에 스크립트는 Enter/가 수동으로 눌러질 때까지 기다립니다 Return.
파일과 폴더를 자동으로 순환하게 하려면 어떻게 해야 합니까?
#!/bin/bash
# write metadata of files in separate file
find . -type f -name '*.*' -exec sh -c '
for file do
echo "$file"
mdls "$file" > "$file"_metadata.txt
read line </dev/tty
done
' sh {} +
답변1
- 이
read line </dev/tty
명령은 터미널(예: 키보드)에서 한 줄을 읽는 것입니다. 이를 원하지 않으면 명령을 제거하십시오. - 그 외에는 루프가 제대로 작동하는 것 같나요? (언뜻보기에 꽤 좋아 보입니다.) 그렇지 않은 경우 질문을 편집하여 무슨 일이 일어나고 있는지 설명하십시오.
-name '*.*'
마침표(일명 "점",.
). 이름이 다음과 같은 파일을 제외하려는 경우아니요포함하다.
(data
및 과 같은README
) 그렇다면 이것이 완벽한 방법입니다. 하지만 당신이 다루고 싶다면모두files, 이-name
절 생략 - find는 기본적으로 모든 파일을 찾습니다.-type f
, 및 등의 절은 모두 검색에 대한 제한 사항(예: 제외)을 지정합니다.-name something
-mtime value
답변2
find /path/to/Users/myuser -type f -print0 |
xargs -0 -I% sh -c "mdls "%" > "%"_metadata.txt"