2017-09-19 3 views
0

100個のサブディレクトリを持つディレクトリがあります。毎日、各サブディレクトリ内のファイル数が1つずつ増加します。 100個のサブディレクトリすべてを最新のファイルが1つしかない別の場所にコピーするためのスクリプトをLinuxに書きたい。どのようにこれを行うことができますか?すべてのサブディレクトリから最新の変更されたファイルを同じサブディレクトリ構造を持つ新しいディレクトリにコピーします。

あなたは、スクリプトを実行することができます(100のサブディレクトリを持っている)あなたの現在のディレクトリから
+0

してください[これまでのところ、あなたが持っているコードを](http://whathaveyoutried.com)表示する[編集]あなたの質問。問題を抱えているコードのアウトライン(ただし、好ましくは[mcve])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –

答えて

0

あなたが変更することができるかのブロックのように:

if [ $f != "./directory_to_cop" ] 
    then 
       mkdir ./directory_to_copy/$f 2>/dev/null 
       cp $f/`ls -t $f | head -1` ./directory_to_copy/$f 
    fi 

とアウトディレクトリがカレントディレクトリ内にされていない場合:

mkdir path_to_directory/name_of_directory/$f 2>/dev/null 

cp $f/`ls -t | head -1` path_to_directory/name_of_directory/$f 
1

for f in `find ./* -maxdepth 0 -type d` 
do 
     if [ $f != "./directory_to_copy" ] 
     then 
        cp $f/`ls -t $f | head -1` ./directory_to_copy 
     fi 
done 

そして、あなたのアウトディレクトリがカレントディレクトリにない場合は、Ifステートメントをスキップすることができますし、相対指定することができますあなたは、CP文で名で保存する必要があるディレクトリへのパスまたは絶対パスが通り:

cp $f/`ls -t $f | head -1` path_to_directory/name_of_directory 
+0

ありがとうございます。これは、各サブディレクトリからすべての最新ファイルをコピーしますが、それらを単一の出力ディレクトリに置きます。 100個のすべてのサブディレクトリを含み、それぞれに最新の単一のファイルが格納されるように、同じディレクトリ構造をoutディレクトリに維持する方法はありますか? $ F -t '場合、[$ F = " " ./directory_to_copy!] その後、 ます。mkdir ./directory_to_copy/$f 2 >を/ dev/null のcp $のF /'のLS:あなたはようであればブロックを変更することができます –

+0

|ヘッド-1' fi' ./directory_to_copy/$fとアウトディレクトリがカレントディレクトリ内にない場合: 'ます。mkdir path_to_directory/name_of_directory/$ -t 2 >を/ dev/null のcp $のF /'のLS F $ f | hecad -1 'path_to_directory/name_of_directory/$ f' – AGBhat

関連する問題