Regex 在BASH中的特定目录中,查找早于X天的子文件夹
使用bash命令,我希望找到特定目录中早于X天的所有子文件夹 这是我的目录结构:Regex 在BASH中的特定目录中,查找早于X天的子文件夹,regex,bash,find,Regex,Bash,Find,使用bash命令,我希望找到特定目录中早于X天的所有子文件夹 这是我的目录结构: /usr/my_folder 在我的_文件夹中,我有不同的子文件夹,如: AAAA1 AAAA2 AAAA3 aaaa1 aaaa2 aaaa3 BBBB1 BBBB2 每个文件夹都包含不同的子文件夹,其中包含“我的数据”。例如: 从my_文件夹开始,我需要搜索AAA*和AAA*的所有子文件夹,这些子文件夹的时间超过例如3天。此外,这些子文件夹必须仅位于AAA*和AAA*的MY_DATA文件夹中 我试着
/usr/my_folder
在我的_文件夹中,我有不同的子文件夹,如:
AAAA1
AAAA2
AAAA3
aaaa1
aaaa2
aaaa3
BBBB1
BBBB2
每个文件夹都包含不同的子文件夹,其中包含“我的数据”。例如:
从my_文件夹开始,我需要搜索AAA*和AAA*的所有子文件夹,这些子文件夹的时间超过例如3天。此外,这些子文件夹必须仅位于AAA*和AAA*的MY_DATA文件夹中
我试着用这个命令,但似乎不起作用
find aaa* AAA* -type d -regextype sed -regex \".*/MY_DATA/*\" -mtime +3 -print0
观察以下复制机(仅针对GNU版本的
date
和touch
进行测试):
这只正确地在其输出上发出AAA1/MY_DATA/TARGET
请注意:
- 使用的是
,而不是-path'*/MY_DATA/*'
,允许全局样式的模式-regex
- 只使用语法引号(对shell的指令),而不是文字引号(传递给
)的数据(文字引号,如find
,将成为文件名匹配模式的一部分)\“
- 复制者使用
生成一个带有正确日期的目录,允许任何人复制和粘贴上面的代码进行测试触摸
stat AAA1/TEST
是否显示了您期望的时间戳?另外,虽然使用xargs-0
或在IFS=read-r-d'
时以编程方式读取输出是正确的,但我建议在测试时只使用-print
。我还避免使用-regex
,这太过了<代码>-路径'*/MY_DATA/*'就可以了。
find aaa* AAA* -type d -regextype sed -regex \".*/MY_DATA/*\" -mtime +3 -print0
# create a directory that should match, and two that should not
mkdir -p AAA1/MY_DATA/TARGET AAA1/MY_DATA/BAD AAA1/ALSO/BAD
# find an adequately conservative date for content that should match
target=$(date -d 'now - 5 days' '+%Y-%m-%d %H:%M')
# update the directory that should match to have that date as its mtime
# ...and also the one that should fail to match due to its name even if mtime is good
touch -d "$target" AAA1/MY_DATA/TARGET AAA1/ALSO/BAD
# Actually run the find command
find AAA* -type d -path '*/MY_DATA/*' -mtime +3 -print