2013-03-24 3 views
0

파일 이름을 기반으로 만들어진 폴더로 파일을 옮기는 스크립트를 작성하려고합니다. 정확한 이름은 있지만 파일 확장명이 다른 두 개의 파일이 있습니다.한 폴더 셸 스크립트에 여러 파일

예를

전에

dir1 - one.txt one.rtf two.txt two.rtf other.txt other.rtf 

내가 이전에 스크립트를 폴더하지만 여러 파일을 넣어하는 방법을 확실하지 메신저 함께 파일을 넣어

dir1 - one two other 

dir1/one - one.txt one.rtf 

dir1/two - two.txt two.rtf 

dir1/other - other.txt other.rtf 

후 1 개의 폴더에

은 파일을 폴더 코드로 변환합니다. 그

답변

0

을 도움이된다면 항상 당신이하는 것 같이 내가 원래 스크립트의 목적이 무엇인지 아주 잘 모르겠어요 동일합니다 규칙 및 파일 확장자 이름을 지정

#!/bin/bash 

dir="/home/user1/Desktop/f2f/" 

for file in ${dir}/* 
do 
     mkdir -p "${file/./#}" 
     mv "${file}" "${file/./#}/" 
done 

어쨌든 어떤 도움을 주시면 감사하겠습니다, <file>.<extension>마다 폴더를 생성하고 <filename>#<extension>을 입력 한 다음 <file>.<extension>을 입력하십시오. (!) 만에서 맨 마지막 구성 요소를 제거하기 원하는

for file in * 
do 
    mkdir -p ${file%.*} 
    mv $file ${file%.*}/ 
done 

단일 % 사랑의 ungreedy 변형을 사용하십시오 : 나는 당신이 찾고있는 버전을 추측

이 하나입니다 파일명.

예를 들어 .txt만을 제거하려는 파일 first.part.second.part.txt을 상상해보십시오.

(find dir1) 전에 다음 폴더 레이아웃을 감안할 때 : 그 당신이 찾고 있던 무슨 경우

dir1 
dir1/other 
dir1/other/other.txt 
dir1/one 
dir1/one/one.rtf 
dir1/one/one.txt 
dir1/two 
dir1/two/two.txt 
dir1/two/two.rtf 

: 이것은 다음과 같은 레이아웃 aftwards (다시 find dir1)가 발생합니다

dir1/ 
dir1/two.txt 
dir1/one.rtf 
dir1/two.rtf 
dir1/other.txt 
dir1/other.rtf 
dir1/one.txt 

.

+0

네, 저에게 감사를 드리고자합니다. – user1944817

관련 문제