
마크다운 파일 폴더가 있습니다. 파일 이름을 일괄적으로 바꿔야 합니다. 날짜를 앞에 추가해야 하며 날짜는 다음 형식으로 파일 내에 있습니다.
----
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
올바른 일을 하고 있다고 생각되면 제거하세요 .