2016-11-30 1 views
0

파일의 이름 (기본 이름/문자열 이름)을 모른 채 여러 파일의 이름을 바꿔야합니다.동일한 확장명의 여러 파일을 일괄 적으로 이름 바꾸기

for i in $(ls /Users/Destiny/Desktop/Index/*.ebwt); 
do 
    mv -v "$i" "${i/hsa/hsa.genome.V86C}"; ## works when i know the string to replace 
done 

하지만 경우 그나마 파일 이름 (문자열 이름)을 알고

내가 함께 시도? 이름 바꾸기 전에

: hsa.1.ebwt hsa.2.ebwt hsa.3.ebwt hsa.4.ebwt

이름 변경 후 : hsa.genome.V86C.1.ebwt hsa.genome .V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.V86C.4.ebwt

+0

으로 변경 한 다음 이름을 a 임의 번호 : D – fedorqui

+0

이름을 바꿀 이름은 무엇입니까? 동일하지만 다른 접미사가 있습니까? – 123

+0

나는 파일의 확장자를 알고 있기 때문에 다른 bash 스크립트에서 사용하려면 soemthing의 이름을 바꿔야하기 때문에이 질문을하고있다. – unique379

답변

0

디렉토리에서 find를 사용하여 수행 할 수 있습니다.

find /Users/Destiny/Desktop/Index -type f -name "*.ebwt" | while read file; 
do 
mv -v "$file" "${file/hsa/hsa.genome.V86C}"; 
done 

이것은 현재 디렉토리 안에 이름을 바꿀 것입니다, 당신은 다른로 이동하려는 경우 : 모두 동일한 확장자를 가지고 있다면 그리고 그것이 당신의 이동과 아래처럼 뭔가를 할 수있는 당신이 현재 가지고 그 당신이이 재귀로 싶지 않는 경우

"/SomeDirectory/$(basename ${file/hsa/hsa.genome.V86C})" 

또한 찾으려는 디렉토리 후 -maxdepth 1을 넣을 수 : 나중에 선 아래로 디렉토리, 당신은 쉽게 이동하기 위해 기본 이름이 같은 두 번째 인수를 둘러싸고 수

관련 문제