如何在Linux中删除多个文件时捕获错误?

斯里尼瓦萨拉·科蒂帕特鲁尼(Srinivarasao Kotipatruni)

我正在使用以下命令删除任何目录/文件。据我所知,如果任何目录/文件具有访问权限或任何其他问题,它将被跳过,其余文件将被删除。

find $CDIR -mtime +7 -exec rm -rfv {} \;

RETURN_CODE_CLEANUP=$?

现在,我要检查批量删除中发生了多少个错误。我认为,RETURN_CODE_CLANUP对于一个或多个错误将为非零。如何捕获这种方法中的任何错误?

库萨兰达

要计算rm产生的错误的确切数量

find "$CDIR" -depth -mtime +7 -exec sh -c '
    for pathname do
        if ! rm -rfv "$pathname"; then
           count=$(( count + 1 ))
        fi
    done
    printf "This batch caused %d errors in rm\n" "$count"' sh {} +

这将对一个$CDIR子目录及其子目录进行深度优先搜索,并在一个多星期前删除带有修改时间戳的任何文件或目录。内联shell脚本将被调用以查找找到的路径名,并对其进行迭代,尝试使用删除它rm如果删除失败,则将其计数。内联脚本末尾,将报告该批次的失败次数。

请注意,这是一种非常不安全的清理方法,因为如果数周内未添加或删除文件或目录$CDIR则将删除以root开头的整个目录结构$CDIR的每个子目录都存在相同的问题$CDIR

您可能只想删除旧文件,然后分别删除目录:

find "$CDIR" ! -type d -mtime +7 -exec sh -c '
    for pathname do
        if ! rm -fv "$pathname"; then
           count=$(( count + 1 ))
        fi
    done
    printf "%d files in this batch could not be deleted\n" "$count"' sh {} +

find "$CDIR" -type d -empty -delete

(这假设您有一个find支持-empty实现-delete,并且可以删除空目录,即使它们没有被第一个find命令清空

与以往一样,当测试执行此类清理的命令时,请在数据副本运行并备份数据。


另一种(更简单的)方法是简单地删除旧文件,然后计算仍然存在的旧文件的数量。该数字将是rm失败的次数(尽管-delete为了简洁起见,在此使用):

find "$CDIR" ! -type d -mtime +7 -delete
find "$CDIR" ! -type d -mtime +7 -exec echo x \; | wc -l

然后,您可能还需要清理空目录,如上所述。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在jqgrid中删除时显示错误消息?

来自分类Dev

如何在Linux Shell中删除多个文件名的前2个字母?

来自分类Dev

如何在bash中捕获mysql错误

来自分类Dev

如何在退出时删除当前文件(在PHP中?)

来自分类Dev

在Linux中删除多个文件?

来自分类Dev

读取文件时如何在golang中删除特殊字符?

来自分类Dev

节点Js:如何在readline模块中捕获“没有这样的文件或目录”错误

来自分类Dev

如何在Linux中删除具有特定模式的文件?

来自分类Dev

如何在Firestore中从Observable捕获错误?

来自分类Dev

如何在Julia中捕获Linux信号

来自分类Dev

如何在收到“无此文件或目录”错误消息时从brew中删除virtualbox

来自分类Dev

如何在Inno Setup中捕获bat文件的错误消息以删除文件?

来自分类Dev

MongoDB如何在DeleteMany中捕获错误

来自分类Dev

如何在Linux bash脚本中捕获错误?

来自分类Dev

如何在LotusScript中捕获错误消息

来自分类Dev

如何在终端(LINUX)中重命名多个文件?

来自分类Dev

如何在bash中捕获mysql错误

来自分类Dev

在Linux中删除特定文件时如何获得通知?

来自分类Dev

如何在Linux中删除文件的最后一列

来自分类Dev

如何在Linux中删除疯狂的大文件夹

来自分类Dev

如何在退出时删除当前文件(在php中?)

来自分类Dev

如何在给定文件(多个)中删除行尾的空白?

来自分类Dev

如何在Haskell中捕获读取错误

来自分类Dev

如何在Linux中复制多个文件的开头?

来自分类Dev

如何在Linux中合并文件同时删除源文件

来自分类Dev

如何在Linux终端中删除“复制”文件夹

来自分类Dev

如何在捕获中打印错误

来自分类Dev

如何在JavaScript中捕获错误的URL?

来自分类Dev

如何在 Shell 脚本中建立远程连接时捕获错误

Related 相关文章

  1. 1

    如何在jqgrid中删除时显示错误消息?

  2. 2

    如何在Linux Shell中删除多个文件名的前2个字母?

  3. 3

    如何在bash中捕获mysql错误

  4. 4

    如何在退出时删除当前文件(在PHP中?)

  5. 5

    在Linux中删除多个文件?

  6. 6

    读取文件时如何在golang中删除特殊字符?

  7. 7

    节点Js:如何在readline模块中捕获“没有这样的文件或目录”错误

  8. 8

    如何在Linux中删除具有特定模式的文件?

  9. 9

    如何在Firestore中从Observable捕获错误?

  10. 10

    如何在Julia中捕获Linux信号

  11. 11

    如何在收到“无此文件或目录”错误消息时从brew中删除virtualbox

  12. 12

    如何在Inno Setup中捕获bat文件的错误消息以删除文件?

  13. 13

    MongoDB如何在DeleteMany中捕获错误

  14. 14

    如何在Linux bash脚本中捕获错误?

  15. 15

    如何在LotusScript中捕获错误消息

  16. 16

    如何在终端(LINUX)中重命名多个文件?

  17. 17

    如何在bash中捕获mysql错误

  18. 18

    在Linux中删除特定文件时如何获得通知?

  19. 19

    如何在Linux中删除文件的最后一列

  20. 20

    如何在Linux中删除疯狂的大文件夹

  21. 21

    如何在退出时删除当前文件(在php中?)

  22. 22

    如何在给定文件(多个)中删除行尾的空白?

  23. 23

    如何在Haskell中捕获读取错误

  24. 24

    如何在Linux中复制多个文件的开头?

  25. 25

    如何在Linux中合并文件同时删除源文件

  26. 26

    如何在Linux终端中删除“复制”文件夹

  27. 27

    如何在捕获中打印错误

  28. 28

    如何在JavaScript中捕获错误的URL?

  29. 29

    如何在 Shell 脚本中建立远程连接时捕获错误

热门标签

归档