[root@localhost ~]# ls *.bak
test2.bak test3.bak test9.bak test.bak test.txt.bak
.bak
모든 파일의 모든 내용을 삭제하는 방법은 무엇입니까 ? 이것이 나의 현재 시도이다
ls *.bak|xargs -t -i mv {}.bak {}
그러나 이것은 나에게 효과가 없습니다. 여기에 해결 방법이 있나요?
답변1
루프는 다음을 수행해야 합니다(POSIX와 유사한 셸에서):
for f in *.bak; do
mv -- "$f" "${f%.*}"
done
한 줄:
for f in *.bak; do mv -- "$f" "${f%.*}"; done
답변2
사용rename
주문하다:
rename 's/\.bak$//' *.bak
's/\.bak$//'
-진주표현식은 다음으로 끝나는 모든 파일 이름과 일치하고.bak
확장자를 제거합니다.
답변3
모든 플랫폼에서 작동해야 하는 것:
for i in *.bak
do
mv $i `echo $i | sed 's/\.bak$//'`
done
답변4
#!/bin/bash
for val in \`ls *.bat`
do
mv $val `echo $val | cut -f1 -d'.'`
done