
如何將串流(在一個命令或腳本中)作為以下任務:
- 比較兩個目錄 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
您可以透過兩種方法來完成:
使用軟連結
使用此命令在目標資料夾中取得來源的另一個副本
ln -s source destination
但在這種情況下,一旦來源檔案或目錄被刪除,連結將被破壞,您將無法存取它。
使用rsync
rsync -avzh sourcepath destinationpath
此命令將自動同步來源和目標。為此命令安排 1 分鐘的 crontab,以便它不斷檢查和更新。