데이터 파일을 반복하여 디렉터리 경로에서 파일 이름을 캡처해야 합니다.

데이터 파일을 반복하여 디렉터리 경로에서 파일 이름을 캡처해야 합니다.

다음 데이터 파일이 있습니다.

recID#  Attachment#            Attachment#2.          ...... Attachment #15 
101      c:/a/b/c/d/fil1.txt    c:/a/b/c/d/e/aaa.txt   ...... c:/a/b/c/d/e/fff.txt        
103      c:/a/b/c/d/abc.txt     c:/a/b/c/d/e/bbb.txt   ...... c:/a/b/c/d/e/ggg.txt   
104      c:/a/b/c/d/e/efg.txt   c:/a/b/c/d/e/ccc.txt   ...... c:/a/b/c/d/e/hhh.txt   
105      c:/a/b/c/mnop.txt      c:/a/b/c/d/e/ddd.txt   ...... c:/a/b/c/d/e/iii.txt 

전체 디렉토리가 아닌 파일 이름만 캡처하고 싶습니다. 예상 출력보다 낮습니다.

rec ID#  Attachment1#         ttachment#2 ...... Attachment #15
101         fil1.txt            aaa.txt     ...... fff.txt      
103         abc.txt             bbb.txt     ...... ggg.txt  
104         efg.txt             ccc.txt     ...... hhh.txt  
105         mnop.txt            ddd.txt     ...... iii.txt  

또한 로컬 디렉터리 c:\a\b\c의 각 파일을 사용할 수 있는지 비교하고 싶습니다. 가능하다면 /Test 디렉터리를 만들고 해당 디렉터리에서 사용 가능한 모든 파일을 이동하고 싶습니다.

예: Attachment1 열 파일 이름 fil1.txt, 이 디렉터리 "c:\a\b\c"에서 사용할 수 있는 경우 해당 파일을 "c:\a\b\c" 디렉터리에서 "c"로 복사하려고 합니다. :\a\b\d".

감사해요

답변1

사용할 수 있는 모든 파일 이름에서 디렉토리 부분을 제거하려면

sed 's#[^ \t]*/##g' inputfile > outputfile

또는

awk '{gsub(/[^ \t]*\//,"",$0);print}' inputfile > outputfile

질문의 예제 입력 파일에서 다음 출력을 얻습니다.

recID#  Attachment#            Attachment#2.          ...... Attachment #15 
101      fil1.txt    aaa.txt   ...... fff.txt        
103      abc.txt     bbb.txt   ...... ggg.txt   
104      efg.txt   ccc.txt   ...... hhh.txt   
105      mnop.txt      ddd.txt   ...... iii.txt 

출력 형식이 중요한 경우 질문에 요구 사항을 지정하십시오.

파일 위치 확인 또는 파일 이동이 입력 파일과 어떻게 관련되는지 질문에서 명확하지 않기 때문에 질문의 다른 부분에 대답할 수 없습니다.

편집하다:

실제 입력에 슬래시( \) 대신 백슬래시( /)가 포함된 경우 다음 수정된 명령은 [/\\]대신 /OR를 사용하여 \/두 입력 변형 모두에 대해 작동합니다.

sed 's#[^ \t]*[/\\]##g' inputfile > outputfile
awk '{gsub(/[^ \t]*[/\\]/,"",$0);print}' inputfile > outputfile

관련 정보