2016-06-16 1 views
1

내 Windows HDD를 우분투 16.04 LTS에서 /media에 마운트했습니다. 내 터미널에서 /media/me/OS/Users/Me/Music 경로로 이동했습니다. 여기에서,이 Windows 경로에있는 모든 MP3 파일을 검색하는 find 명령을 실행 :이 .MP3 파일 경로의 무리를 반환리눅스 터미널에 공백이있는 파일 목록을 복사하는 방법

find . -type f -name *.mp3 

(색상은 아무 의미 없습니다 위키 형식을 통해 발생해야합니다) :

./iTunes/iTunes Music/Yeah Yeah Yeahs/It's Blitz/01 Skeletons.mp3 
./iTunes/iTunes Music/Yeah Yeah Yeahs/It's Blitz/Gold Lion.mp3 
./iTunes/iTunes Music/Yeah Yeah Yeahs/It's Blitz/Heads Will Roll.mp3 
./iTunes/iTunes Music/Yeah Yeah Yeahs/It's Blitz/Maps.mp3 

파일에서 볼 수 있듯이 파일 이름에는 공백이 있습니다. 내 목표는 여기에있는 모든 파일 (560 정도)을 우분투 HDD의 /home/me/Music 디렉토리에 복사하는 것입니다. 다음은 내가 시도한 것들의 목록이다. "./iTunes/iTunes", "Music/Yeah", "Yeah"를 찾을 수 없다는 것을 나에게 소리 지르는 터미널로 끝나는 것들이있다. 생각.

것들 나는 시도했다 :

  1. for f in $(find . -name *.mp3); do cp $f ~/Music/WindowsMP3s/; done
  2. find . -type f -name *.mp3 > output.txt 다음 while read file; do cp $file ~/Music/WindowsMP3s/; done <output.txt

내가 for 루프와의 무덤 액센트 (`)에서 파일 이름을 둘러싼 시도했습니다 output.txt 파일 자체. 나는 모든 공간 앞에 1과 2 개의 백 슬래시를 사용하여 output.txt를 편집 해 보았습니다.

모든 아이디어가 우수 할 것입니다.

P. 예, 파일 관리자를 통해이 모든 작업을 수행하고 외장 하드 드라이브로 복사 한 다음 우분투로 복사 할 수는 있습니다.하지만 그 작업은 어디에서 재미 있습니까? :)

답변

1

. 공백이있는 변수를 확장하려면 큰 따옴표를 사용해야합니다 (백틱은 인라인을 실행하는 데 사용됩니다).

가장 쉬운은 CP를 통해 /home/me/Music./iTunes/iTunes Music의 모든 내용을 복사됩니다 : 당신이 목록을 작성하려면이 목록의 내용 만 복사

cp -av "./iTunes/iTunes Music"/* /home/me/Music 

while read을 사용 후, 다음을 조작하고, 당신이 그랬던 것처럼,하지만 따옴표로 각각의 결과를 묶

find . -type f -name *.mp3 > output.txt 
cat output.txt | while read file; do 
    cp "$file" ~/Music/WindowsMP3s/ 
done 
+0

그런 간단한 해결책. 적어도 큰 따옴표를 사용해보십시오!Ziggy에게 감사드립니다. – mstep91

2

따옴표를 사용하면 간단하게 와일드 카드를 추가 할 수 있습니다.

예 :

당신이 할 수있는 몇 가지 방법이 있습니다
cp "./Folder With Spaces/"*.mp3 ./folderWithoutSpaces/ 
+0

plus1. 하지만 OP가 중첩 된 하위 디렉토리에서 mp3 파일을 복사해야하는 지 잘 모르겠습니다. – anishsane

관련 문제