我正在尝试基本上查看每个用户都有子目录的目录。说user1和user2等等。我想基本浏览每个目录并查找早于某个日期的文件并记录它。我可以使用ls -d / directory / * /获取目录列表。我知道我可以使用find ./-type f -mtime +30来查找未修改超过30天的文件。我无法弄清楚如何使用find,所以每次通过它会看起来像find ./user1 -type f -mtime30然后是./user2等等。
#!/bin/bash
LIST="$(ls -d /Volumes/db_backups/*/)"
for i in "$LIST";do
fold=`basename $i`
echo $fold
ModList=$(find $i -type f -mtime +30 >$fold.out )
$ModList
done
更新:我能够获得文件列表。但是,我想不要遍历特定的子目录并通过电子邮件发送给每个用户。例如,我有一个像/dir1/dir2/user1/file.txt一样的文件。我如何获取user1列表并将其放入user1.out然后再放入user2.out等等?
答案 0 :(得分:1)
您可以提供find
的多个路径:
find directory/* -type f ...
此处directory/*
会扩展为directory/user1 directory/user2
,实际上会为find
提供多条路径。
编辑再想一想,您应该可以使用find directory -type f
(帽子提示@anubhava)。
答案 1 :(得分:0)
如果你真的想为每个子目录运行一个单独的进程,那么这就是你想要的:
cd /Volumes/db_backups
for entry in *
do
if [[ -d "${entry}" ]] # skip things that aren't directories
then
find "${entry}" -type f -mtime +30 -print > /some/log/directory/"${entry}".output
fi
done
if ... fi
位可以缩短为[[ -d "${entry}" ]] && find ...
,这更简洁但不太清楚你的意图。