다음과 같이 이름을 바꿔야 하는 디렉터리가 수백 개 있습니다.
from 15_öblös to 15_adj_öblös
from 14_kies to 14_adj_kies
and so on...
그래서 숫자와 단어 사이에 "adj"를 삽입해야 합니다.
내가 한 일은 좋지 않았어
for dic in [0-9]*
do
m=`echo "$dic" | cut -d"_" -f1`
l=`echo "$dic" | cut -d"_" -f2`
mv "$dic" "${m}_adj_${l}"
done
답변1
rename
Fedora, Debian 및 그 파생 제품(Ubuntu, Mint 등)에는 기본적으로 이 작업 을 수행하는 Perl 버전의 명령이 설치되어 prename
있으며 다음과 같이 작동합니다.
prename 's/_/_adj_/' *
# OR
rename 's/_/_adj_/' *
다음과 같이 더 복잡한 작업을 수행하여 더 세밀하게 제어하여 파일을 찾고 이름을 바꿀 수 있습니다.
prename 's/(\d+)_/$1_adj_/' *
# OR
rename 's/(\d+)_/$1_adj_/' *
참고: 의 경우 prename
첫 번째 매개변수는 Perl 코드입니다.
답변2
나는 귀하의 스크립트에서 문제를 볼 수 없지만 귀하가 가지고 있는 모든 디렉토리를 알지 못하기 때문에 귀하가 직면한 문제가 무엇인지 알 수 없습니다. 하지만 다음과 같은 것이 도움이 될 수 있습니다.
find ./ -maxdepth 1 -type d | while read dirname
do
newdirname=$(echo ${dirname} | sed -e "1,1s/_/_adj_/")
mv ${dirname} ${newdirname}
done
답변3
비임베디드 Linux 시스템에서는 이 rename
명령을 사용할 수 있습니다. 이 명령은 매우 간단하지만 이 경우에는 충분합니다. 이름이 숫자로 시작하는 현재 디렉터리의 모든 파일 중 첫 번째 파일을 다음 _
과 같이 바꾸려면:_adj
rename _ _adj_ [0-9]*
Debian 및 그 파생 제품(Ubuntu, Mint 등)에서는 이 명령을 이라고 합니다 rename.ul
. 이러한 배포판에 대한 명령은 첫 번째 인수 rename
라고도 하는 더 강력한 다른 명령입니다 .prename
진주암호. _
다음으로 교체 _adj_
:
prename 's/_/_adj_/' [0-9]*