2012-12-05 3 views
0

*_[m|f].txt에서 *.txt까지 모든 파일의 이름을 바꾸려고합니다. _[m|f]의 인스턴스가 파일 이름에 나타나는 경우 확장자 바로 앞에 항상 이 나타나는 것으로 간주 할 수 있습니다.bash 쉘에서 어떻게이 간단한 배치 이름을 바꿉니 까?

예 :

+-----------------------+---------------------+ 
|  input   |  output  | 
+-----------------------+---------------------+ 
| hello_hi_wefwef_f.txt | hello_hi_wefwef.txt | 
+-----------------------+---------------------+ 
| ya_yo_sup_m.txt  | ya_yo_sup.txt  | 
+-----------------------+---------------------+ 

내가 현재이를 시도하고있다 : |

for i in *_[m|f].txt ; do 
    mv "$i" "${i/-_[m|f].txt/.txt}" 
done 

를하지만 불평 전혀 없다 정규 표현식에 대한 연산자. 내가 원하는 것을 할 수있는 간단한 방법이 있습니까?

+1

단지를 제거 | – technosaurus

답변

2

는 다음과 같이 스크립트를 수정

for i in *_[mf].txt; do 
    mv "$i" "${i/_[fm]\.txt/\.txt}" 
done 
+0

트릭을 한 덕분에, 우리는 두 번째 \ 필요가 없습니다. 나는 그것을 바꿨다. 대신 – Popcorn

+0

당신을 환영합니다. 그에 맞게 변경하십시오. – anubhava

관련 문제