次のタスクにストリーミングする方法(1つのコマンドまたはスクリプトで):
- 両方のディレクトリdir1とdir2の内容(ファイルとフォルダ)を比較します。
- dir1ディレクトリに新しいファイルが表示されたら、そのファイルをdir2にコピーし始め、同時にハンドラを使用して処理します。
diff - >コピー - > some.shの実行
答え1
次のコマンドを使用して、dir1 の内容を file1.txt にリストします。
ls -ltr | awk '{print $9}' > /var/tmp/file1.txt
file1.txt には次の内容が含まれています。
t1
1
l.sh
r.txt
l.py
l.txt
p.txt
次のコマンドを使用して、dir2 の内容を file2.txt にリストします。
ls -ltr | awk '{print $9}' > /var/tmp/file2.txt
t1
1
l.sh
r.txt
l.py
l.txt
file1.txtと比較して、このコマンドはfile2.txtにないコンテンツを見つけてディレクトリ2にコピーします。
awk 'NR==FNR {a[$1];next}!($1 in a) {print $1}' file2.txt file1.txt |
awk '{print "cp -rvfp" " " "directory1path”$1 " " "directory2path"}' |
sh
答え2
これは2つの方法で行うことができます。
ソフトリンクの使用
ターゲットフォルダにソースの別のコピーを取得するには、このコマンドを使用します。
ln -s source destination
ただし、この場合、ソースファイルやディレクトリを削除するとリンクが壊れてアクセスできなくなります。
rsyncの使用
rsync -avzh sourcepath destinationpath
このコマンドはソースとターゲットを自動的に同期します。継続的に確認して更新できるように、このコマンドの1分crontabを予約してください。