2013-05-19 1 views
1

디렉토리 안에 수천 개의 파일이 있습니다. "th_"와 같은 접두어를 추가해야 이름이 바뀌므로 파일이 th_65461516846.jpg 이 될 수는 없습니다.rename - error 인수가 너무 긴 파일에 접두사를 추가하십시오.

오류 "인수 너무 오래"나는이 명령

이름 바꾸기의/^/th_/'*에게

감사를 사용하고 있습니다!

+0

결과 파일 이름의 전체 경로는 어느 정도입니까? https://fogbugz.bitvise.com/default.asp?WinSSHD.1.3867.1 –

+0

어떤 셸을 사용하고 있습니까? 파일 이름이 너무 길거나'*'의 확장이있는 경우 설명에서 알기가 어렵습니다. StackOverflow에서 정확한 오류를 제공하는 것이 중요합니다. 예를 들어 "Argument list too long"오류 메시지가 "Filename too long"과 매우 다른 경우입니다. 내 대답은 이전 오류 메시지가 있다고 가정합니다. – msw

+0

인수가 너무 많은 파일에 너무 오래 광고했습니다. 죄송합니다 내가 새로운이 – Gabriele

답변

0

xargs 프로그램은 명령 줄을 여러 명령으로 구분하여 셸 줄 길이 제한을 피하는 데 사용됩니다. 귀하의 경우에는, 당신은 사용하십시오 : 반복적으로 파일 목록이 모두 소진 될 때까지 ls의 출력의 일부와 rename을 실행

ls | xargs rename 's/^/th_/' 

합니다. 이 관용구가 파일 이름에 공백이나 다른 재미있는 문자가있는 경우 특별한주의가 필요하다는 것을 알고 있어야합니다 (필자의 가정에 기반하지는 않습니다).

+0

작동하지 않았다 : ( 오류가 없습니다 – Gabriele

+0

실제로 이름이///th_/'* 3 파일만을 샘플 디렉토리로 테스트하고 ID가 작동하지 않았다 – Gabriele

+0

for i * do mv $ i th _ $ {i #}; done "mv : target'.jpg '이 디렉토리가 아닙니다."라는 메시지를 잠시 후에 보냈지 만 계속 작동하고 이름이 변경되었습니다. – Gabriele

0

이것은 하나의 작업을

for f in *; do mv "$f" "${f/9/th_}";done 

또는

for f in * ; do mv $f th_${f#} ; done 

나는 그들이 모두 작업 2 사이에 있지만 내 경우에는 다른 모르겠어요했다.

관련 문제