将查找和移动命令输出通过管道传输到文件

将查找和移动命令输出通过管道传输到文件

我正在执行以下命令,但输出不会写入文件 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 \;

答案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

相关内容