2017-09-21 22 views
1

UNIXシェルksh複数のファイルをディレクトリにコピーし、それぞれを正しいディレクトリに移動する方法

ファイルリストを作成しましたが、現在各ファイルを正しいパスにコピーしようとしています。

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

カレントディレクトリ /サンプル/ DIR /不明/

-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は、念のために、特別な文字をエスケープで動作するはずです。 (ファイル名の先頭にダッシュがあるため)

cut -c 2-5はあなたが理解していない他の何かがあるなら、私に教えてください2から5まで

をすべての文字を取っています。

+0

ありがとうございました! – Joel

+0

私の答えが助けてくれれば、あなたはupvote/acceptをしてもらえますか? – Will

+1

こんにちはウィル、私はそれを受け入れたが、私はまだそれを行うのに十分な担当者を持っていないので、これをupvoteすることはできません。しかし、多くのありがとう! – Joel

関連する問題