2014-04-06 2 views
2

이름에 밑줄이있는 모든 파일과 폴더의 이름을 바꾸고 밑줄을 하이픈으로 바꿉니다. 현재밑줄이있는 파일과 폴더의 이름을 모두 Linux에서 하이픈으로 바꾸는 방법

나는 다음과 같은 코드를 사용하고,

rename '_' '-' */*/*

그것은 작동했지만 지금은

+0

명령이 너무 많은 파일 이름과 일치하기 때문에 이름의 확장이 길어지고 적어도 쉘 명령의 최대 크기보다 길어집니다. – alk

+0

루프로 작업하려면 어떻게해야합니까? 나는 누군가가 나를 여기에서 도울 수 있기 때문에 매우 감사 할 것이다! –

+0

awk 도구를 살펴볼 수 있습니다. 또는 find 명령을'-exec' 옵션과 함께 사용하십시오. – alk

답변

1

당신이 시도 할 수 나에게 "너무 긴 인수 목록"을 보여주고있다 :

$ tree foo 
foo 
├── dir_1 
│   └── foo_file_2 
└── file_1 

1 directory, 2 files 
$ for ft in d f; do find foo -type $ft -execdir sh -c 'mv "$0" "${0//_/-}"' {} \; ; done 2>/dev/null 
$ tree foo 
foo 
├── dir-1 
│   └── foo-file-2 
└── file-1 

1 directory, 2 files 

이렇게하면 모든 디렉토리의 이름을 바꾼 다음 모든 파일 (ford f의 루프를 넘김)을 m 하나의 반복에서 모두 이름을 바꿉니다.

관련 문제