2013-08-28 4 views
0

우리는 약 3000 개의 MP3 파일 저장소를 가지고 있습니다. 이 파일의 대부분은 이름에 이전 도메인 이름이 있습니다. 예 : somesong_oldDomainName.mp3SSH는 파일 이름 목록에서 문자열을 찾고 바꾸기

사이트에 SSH를 넣고 해당 파일의 인스턴스를 모두 찾아 새 도메인 이름으로 바꿉니다. 예 : somesong_NEWDomainName.mp3

기본 SSH 명령은 알고 있지만 이와 같은 고급 기능은 아닙니다.

분명히 여러 명령을 조합해야합니다.

ssh [email protected] 

은 다음

[email protected]:~$ 

어디를 같은 단자의 어떤 종류를 얻을 것이다 :

+0

ssh는 단지 y는 원격 사이트와의 통신을 설정합니다. Linux 기반이라면 아마도 쉘과 같은 종류의 쉘이있을 것입니다. bash이므로 http : // stackoverflow를 확인하십시오.com/questions/11053558/bash-rename-small-part-of-middle-of-name – x29a

+0

파일이있는 시스템을 확인할 수 있습니까? 리눅스 기반? 질문에 "bash, shell, remote-access"라는 태그를 추가하려고했지만 리뷰어는 "여러 명령의 조합"이 쉘 질문을 정당화 할 수 있다고 생각하지 않았습니다. 그래서 당신은 당신의 mp3machine에 SSH를 할 때 대화 형 쉘을 얻는가? – x29a

+0

그래서 나는 배시가있는 리눅스 서버에있다. – user1661286

답변

2

당신이 당신의 리눅스 서버에 ssh를 할 때 대화 형 쉘을 가정하면,이 가능한 방법이 될 수있다 해당 원격 시스템에서 실행할 명령을 입력하십시오. 코멘트에서 언급 한 바와 같이

, 여기에 대한 대답은 아주 잘 맞는 있습니다 이것은 가정

Bash: Rename small part of multiple files in middle of name

[email protected]:~$ for i in *.mp3; do mv "$i" "$(echo "$i" | sed 's/_oldDomainName/_NEWDomainName/g')"; done 

, 현재 디렉토리는 모든 MP3 파일이있는 일이다.

파일에 대한 상호 작용 방식을 원하지 않으면 (예 : 매우 자주 변경되고 스크립트가이 작업을 수행하기를 원하기 때문에 SSH는 명령 및/또는 쉘 스크립트를 원격으로 실행할 수도 있습니다. 파이프에 SSH error when executing a remote command: "stdin: is not a tty"

ssh 연결에 로컬 쉘 스크립트 : How to use SSH to run a shell script on a remote machine?

실행 SSH을 통해 원격 쉘 스크립트 : how to run a script file remotely using ssh

편집

는 SSH 호출로 직접 명령을 전달하려면 : SSH를 통해 원격 컴퓨터에 연결되어 있고 bash 및 sed와 비슷한 버전이 있다고 가정하면 다음과 같이 작동해야합니다.

(210)
$ ls 
bar_chosefil.mp3 boo_chosefil.mp3 foo_chosefil.mp3 
$ for i in *.mp3; do mv $i $(echo $i | sed 's/chosefil/tamasha/g'); done 
$ ls 
bar_tamasha.mp3 boo_tamasha.mp3 foo_tamasha.mp3 

버전은 포함 :

  • 배쉬 : 4.2.25
  • 가 나오지 : 4.2.1
  • MV : 업데이트 공백으로 작업 명령 : 8.13

편집 2 in 파일 이름

$ ls 
asd chosefil.mp3 bar_chosefil.mp3 boo_chosefil.mp3 foo_chosefil.mp3 
$ for i in *.mp3; do mv "$i" "$(echo "$i" | sed 's/chosefil/tamasha/g')"; done 
$ ls 
asd tamasha.mp3 bar_tamasha.mp3 boo_tamasha.mp3 foo_tamasha.mp3 
+0

이 제안은 하나의 파일 만있는 디렉토리에서 작동하는 것처럼 보인다! 그게 의미가 있는지 모르겠지만, 나는 단지 하나의 파일을 포함하는 디렉토리 내에서 그것을 시도하고 하나의 파일의 이름을 올바르게 바꿉니다. 하지만 여러 파일이있는 디렉토리에서 실행하면 다음과 같은 오류가 발생합니다. "파일 이름"이 디렉토리가 아닙니다 !! 나는 이것을 다음과 같이 사용했다 : for i in * .mp3; mv $ i $ (echo $ i | sed의/choosefil/tamasha/g '); done – user1661286

+0

파일 이름에 공백이 있다고 가정합니까? 나는 그것들과 함께 작업 할 수있는 대답을 업데이트했다. – x29a

+1

'$ m "$ {i/_oldDomainName/_newDomainName}"과 같은 쉘 자체 대체 메커니즘을 사용하는 것이 더 낫다. – tripleee