파일 내용을 기반으로 파일 폴더 이름 바꾸기

파일 내용을 기반으로 파일 폴더 이름 바꾸기

마크다운 파일 폴더가 있습니다. 파일 이름을 일괄적으로 바꿔야 합니다. 날짜를 앞에 추가해야 하며 날짜는 다음 형식으로 파일 내에 있습니다.

----
Title: Title-of-blog-article
Date: 2012-03-07

awk를 사용하여 날짜를 가져오는 방법을 찾았습니다. awk에서 해당 날짜를 가져와서 파일 이름을 바꾸는 올바른 마법을 찾을 수 없는 것 같습니다. 의도된 명명 체계:

OLD FILE
Title-of-blog-article.md

NEW FILE
2012-03-07-Title-of-blog-article.md

이 폴더에는 150개 이상의 파일이 있습니다. 나는 bash for 루프를 시도하고 mv와 echo로 테스트했습니다. 지금까지 루프에서 awk 변수는 변경되지 않고 첫 번째 파일의 필드만 사용합니다. 그래서 나는 확실히 도움이 필요합니다.

답변1

아마도 그다지 효율적이지는 않을 것입니다. 그러나 어떻습니까?

for f in *; do 
  d=$(awk '/^Date:/ {print $2; exit}' "$f")
  [[ -n "$d" ]] && echo mv --no-clobber -- "$f" "${d}-${f}"
done

echo올바른 일을 하고 있다고 생각되면 제거하세요 .

관련 정보