2012-02-26 2 views
0

Backstory :파일의 파일 경로에서 링크를 만드는 방법은 무엇입니까?

음악 컬렉션에 MP3 및 FLAC 파일이 있습니다. 음악/mp3 및 음악/flac의 FLAC으로 구성된 MP3가 있습니다. FLAC 파일을 듣는 것을 선호하는 반면, 대부분의 음악은 MP3입니다. 음악/mp3의 일부 노래는 음악/flac의 노래와 동일합니다.

내 데스크톱 뮤직 플레이어가 음악 디렉토리의 라이브러리를 만들 때 해당 노래가 복제됩니다. 내 음악 플레이어가/music/flac을 스캔 할 수 있도록/music/mp3에 고유 한 MP3 파일을 자신의 디렉토리에 연결하고 싶습니다. 이렇게하면 FLAC 인코딩과 고유 MP3가있는 모든 노래가 재생됩니다.

질문 :

나는 음악/MP3에 고유 한, 나는 줄 바꿈으로 구분 절대 경로 이름의 파일이있는 노래 결정

. ln 명령을 각 행을 반복하도록 만들려면 어떻게해야합니까 (music/mp3_unique라고하는 링크를 만듭니다)? 내가 ln 생각하지 않는다

답변

0

는 파일의 링크를 생성 할 수있는 능력을 가지고 있지만, 당신이 떠들썩한 파티를 사용하고 있기 때문에, 당신은이 작업을 수행 할 수 있습니다 file는 절대 사용하여 파일의 이름입니다

for i in `cat file`;do ln -s $i;done 

을 경로

+0

나는 '이런!' 한번 당신의 우아하고 간단한 해결책을 보았습니다. 제가 놓친 부분은 고양이에게 파일을 만들어 스트림을 만드는 것입니다. 감사! – cheapous

+0

아, 그리고 ln의 두 번째 인수는 연결할 대상 디렉토리 여야합니다. – cheapous

0

모든 파일이 동일한 파일 시스템에있는 경우 소프트 링크가 아닌 하드 링크를 사용할 수 있습니다. 이것은 더 이상 절대 경로 이름을 사용할 필요가 없다는 장점이 있습니다. 이 경우,이 같은 것을 할 유혹을받을 것이다 :

을 그래서 ... 당신이 이런 식으로 뭔가를 보이는 파일 트리가 있다고 가정 :

/음악 /음악/MP3 /음악/FLAC

음악 아래 'scanme'디렉토리를 생성하고 재생하려는 음악의 모든 하드 링크를 만듭니다

mkdir /music/scanme 
cd /music/scanme 
(cat ../mp3/unique.txt; find ../flac) | while read file 
do 
    ln "$file" $(basename "$file") 
done 

이 파일 이름은 공백을 포함 할 때 작동하는 직선을 루프는하지 않습니다.