파일의 메타데이터 속성을 별도의 텍스트 파일에 쓰기 위한 Bash 스크립트

파일의 메타데이터 속성을 별도의 텍스트 파일에 쓰기 위한 Bash 스크립트

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

  1. read line </dev/tty명령은 터미널(예: 키보드)에서 한 줄을 읽는 것입니다. 이를 원하지 않으면 명령을 제거하십시오.
  2. 그 외에는 루프가 제대로 작동하는 것 같나요? (언뜻보기에 꽤 좋아 보입니다.) 그렇지 않은 경우 질문을 편집하여 무슨 일이 일어나고 있는지 설명하십시오.
  3. -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"

관련 정보