사람들의 성과 이름을 쉼표로 구분하여 유닉스 디렉토리 이름 바꾸기(역방향)

사람들의 성과 이름을 쉼표로 구분하여 유닉스 디렉토리 이름 바꾸기(역방향)

내 Mac에는 1,000개가 넘는 폴더가 있는 디렉토리가 있습니다. 각 폴더는 개인의 이름과 성으로 구성되며 쉼표로 구분됩니다. 예를 들어 - Smith, John.

Smith, John이 John Smith가 되도록 쉘 스크립트를 사용하여 모든 디렉토리의 이름을 바꾸고 싶습니다.

이러한 디렉터리는 DAM 시스템으로 수집되어 폴더 이름을 가져와 디렉터리 아래의 모든 항목을 키워드로 변환합니다. 지금 Smith와 마찬가지로 John은 "smith"와 "John"을 별도의 키워드로 사용하여 그 아래의 각 파일에 태그를 지정합니다. 모든 파일의 이름을 쉼표 없이 "이름 성"으로 바꿀 수 있다면 그 아래의 모든 파일은 자동으로 DAM의 키워드로 해당 사람의 이름으로 태그가 지정될 수 있습니다.

어떤 아이디어라도 감사드립니다!

답변1

Larry Wall이 작성한 내용이 있으면 rename사용할 수 있습니다. sed파일 이름 입니다 . 일부 시스템에는 이라는 다른 도구가 있습니다 rename.

rename -n -e 's/([^,]+), ([^,]+)/$2 $1/' «list_of_files»

«list_of_files»예를 들어 로 바꾸십시오 *. 테스트가 완료되면 삭제하세요 -n.

답변2

Perl 버전의 rename유틸리티는 다음을 수행할 수 있습니다.

rename 's/(.+), (.+)/$2 $1/' *

노트: 이 명령을 실행하기 전에 디렉터리 트리를 백업하십시오. 작동해야 하지만 디렉터리 이름에 대한 세부 정보를 너무 많이 제공하지 않았습니다.

답변3

$ find .  -type d -maxdepth 1 -exec basename "{}" \; | grep -v '^.$' | awk -F", " '{ print "mv \""$0"\" \"" $2, $1"\""  }' | tee rename.sh
mv "Doe, Jon" "Jon Doe"
mv "Smith, Bob" "Bob Smith"
mv "Roe, Jane" "Jane Roe"

chmod u+x rename.sh그런 다음 출력이 주어지면 한 번 실행할 수 있습니다 .tee

관련 정보