원래 이름에 *.~1~ 접미사를 사용하여 파일 및 디렉터리 이름을 바꾸는 방법은 무엇입니까?

원래 이름에 *.~1~ 접미사를 사용하여 파일 및 디렉터리 이름을 바꾸는 방법은 무엇입니까?

등의 underscore.~1~이름을 가진 여러 파일이 포함 된 디렉토리가 있습니다 .main.js.~1~index.js.~1~

underscore디렉토리와 그 안에 있는 파일의 이름을 원래 이름 등으로 바꾸는 방법은 무엇입니까 main.js?index.js

답변1

(Bash에서) 가장 쉬운 방법은 디렉토리로 변경하고 다음과 같이 수행하는 것입니다.

for i in *.~1~; do mv $i ${i%.~1~}; done

위의 코드는 모든 파일을 반복 *.~1하고 확장자(대상으로 지정) 없이 해당 파일로 이동합니다 ${i%.~1~}. 쉘에 대한 텍스트 대체를 찾으십시오.

디렉터리로 비슷한 작업을 수행할 수 있지만 디렉터리가 하나만 있는 경우 수동으로 수행하는 것이 더 간단합니다.

mv underscore.~1~ underscore

답변2

mv터미널에서는 단순히 명령을 사용하여 폴더와 파일을 이동할 수는 없나요 ?

$ find adir_.~1~/ -ls
10757186    4 drwxrwxr-x   2 saml     saml         4096 Oct 14 23:54 adir_.~1~/
10370964    0 -rw-rw-r--   1 saml     saml            0 Oct 14 23:50 adir_.~1~/afile_.~1~

이제 디렉터리 + 파일을 이동합니다.

$ mv adir_.~1~/ adir
$ mv adir/afile_.~1~ adir/afile

그리고 확인하세요:

$ find adir/ -ls
10757186    4 drwxrwxr-x   2 saml     saml         4096 Oct 15 00:01 adir/
10370964    0 -rw-rw-r--   1 saml     saml            0 Oct 14 23:50 adir/afile

답변3

모든 파일과 디렉토리의 이름을 한 번에 바꾸려면 다음을 사용할 수 있습니다.rename최소한 Debian 기반 Linux 배포판에서는 이 명령이 perl패키지에 포함되어 있습니다.

rename 's/\.~1~$//' */*.~1~ underscore.~1~

첫 번째 매개변수 rename는 수행할 대체를 설명하는 Perl 정규 표현식입니다. 후속 매개변수는 작업할 파일의 이름입니다. 하나의 호출만 관리하려면 매개변수 경로 확장이 발생한 후 해당 디렉토리 내의 파일 경로가 변경되지 않도록 마지막 디렉토리를 지정하십시오.

관련 정보