2017-09-21 18 views
1

유닉스 셸 ksh여러 파일을 디렉터리에 복사하고 올바른 디렉터리로 이동하는 방법

파일 목록을 만들었으며 현재 각 파일을 올바른 경로로 복사하려고합니다.

(mylist) 
-1111 
-2222 
-3333 
-4444 
-5555 

현재 디렉토리 /샘플/알 수없는 디렉토리//

-1111fileneeded.txt 
-2222fileneeded.txt 
-3333fileneeded.txt 
-4444fileneeded.txt 
-5555fileneeded.txt 
-6666dontneed.txt 
-7777dontneed.txt 
-8888dontneed.txt 
...etc 

각 파일의 첫 번째 4 자들이 갈 필요가 어디에 올바른 경로와 일치합니다. 그래서 여기

/sample/dir/1111/ 
/sample/dir/2222/ 
/sample/dir/3333/ 
/sample/dir/4444/ 

내가 좀 붙어 각 파일이 올바른 디렉토리로 이동하도록 할 필요가 무엇인지 알아 내려고 어딘지

for i in `cat mylist` 
do echo "$i" 
find /sample/dir/unknown/mylist* 

이가 .. 내가 현재 가지고있는 것입니다.

+0

어떤 플랫폼과 쉘을 사용하고 있습니까? –

+0

죄송합니다. 예. 쉘을 사용하고 있습니다. – Joel

+0

/어느 쉘? bash, csh, tcsh, sh, ...? –

답변

0

이 단지의 경우,

#!/bin/ksh 
while IFS=\| read -r line; do 
    dir=`echo $line | cut -c 2-5` 
    mv "$line /sample/$dir/$line" 
done > filelist.txt 

IFS 특수 문자를 탈출하다 작동합니다.

당신이 이해하지 못하는 뭔가가 있다면 알려주세요 (A 파일 이름의 시작에 대시가 있기 때문에)

cut -c 2-5

은 5 2에서 모든 문자를하고있다.

+0

정말 고마워요! – Joel

+0

내 대답이 도움이된다면 upvote/accept 할 수 있습니까? – Will

+1

안녕하세요, 받아 들였습니다. 아직 충분히 할 담당자가 없기 때문에 나는 이것을 upvote 할 수 없습니다. 그러나 많은 감사합니다! – Joel