gpt4 book ai didi

linux - 用于删除旧文件的 BASH 脚本,并创建一个包含已删除文件总数和大小的文本文件。

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:45 25 4
gpt4 key购买 nike

我是一名实习生,我的任务是创建一个 BASH 脚本来删除目录中超过 60 天的文件,然后导出一个文本文件,其中包含已删除文件的数量以及已删除的数据量。我仍在尝试学习 BASH 并使用一个工具来删除超过 30 天的文件;

    `find $DIR -type f -mtime -60 -exec rm -rf {}\;`

我仍在积极尝试学习 BASH,因此非常感谢对任何回复的额外注释!

附言我找到了 Bash Academy ,但看起来该站点不完整,对于我学习 bash 的进一步阅读的任何建议也将不胜感激!

最佳答案

我会使用下面的脚本,比如 deleter.sh 目的:

#!/bin/bash
myfunc()
{
local totalsize=0
echo " Removing files listed below "
echo "${@}"
sizes=( $(stat --format=%s "${@}") ) #storing sizes in an array.
for i in "${sizes[@]}"
do
(( totalsize += i )) #calculating total size.
done
echo "Total space to be freed : $totalsize bytes"
rm "${@}"
if [ $? -eq 0 ] #$? is the return value
then
echo "All files deleted"
else
echo "Some files couldn't be deleted"
fi
}
export -f myfunc
find "$1" -type f -not -name "*deleter.sh" -mtime +60\
-exec bash -c 'myfunc "$@"' _ {} +
# -not -name "*deleter.sh" to prevent self deletion
# Note -mtime +60 for files older than 60 days.

chmod +x ./deleter.sh

并将其运行为

./deleter '/path/to/your/directory'

引用资料

  1. 查找[ manpage ]了解更多信息。
  2. stat --format=%s 给出我们存储在数组中的字节大小。参见 [ stat ]联机帮助页。

感谢反馈

关于linux - 用于删除旧文件的 BASH 脚本,并创建一个包含已删除文件总数和大小的文本文件。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38464616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com