Linux

管道查找和移動命令輸出到文件

  • August 24, 2021

我正在執行以下命令,輸出不會進入 move.log文件。我在命令中遺漏了什麼嗎?

find /db_backups/30_plus_days -type f -mtime +90 -exec mv {} /db_backups/90_plus_days/ >> /db_backups/move.log 2>&1 \;

你的find命令行:

find /db_backups/30_plus_days -type f -mtime +90 -exec mv {} /db_backups/90_plus_days/ >> /db_backups/move.log 2>&1 \;

是相同的

find /db_backups/30_plus_days -type f -mtime +90 -exec mv {} /db_backups/90_plus_days/ \; >>/db_backups/move.log 2>&1 

以這種方式使用該find命令時,根本不會產生任何輸出,因此不會將新數據寫入move.log文件。

如果要儲存已移動文件的名稱,請-print-exec:

find /db_backups/30_plus_days -type f -mtime +90 -print -exec mv {} /db_backups/90_plus_days/ \; >>/db_backups/move.log 2>&1

或者,使用更好的換行符(僅用於可讀性):

find /db_backups/30_plus_days \
   -type f -mtime +90 -print \
   -exec mv {} /db_backups/90_plus_days/ 2>&1 \; \
   >>/db_backups/move.log

引用自:https://unix.stackexchange.com/questions/420701