如何在unix中存储和删除匹配的文件以及目录

时间:2017-01-23 20:42:27

标签: shell unix

我需要在shell脚本

中的单个变量中存储匹配的文件和目录名称
log_dir=`echo $line | awk -F "$delimiter" '{print $1}'`
pattern=`echo $line | awk -F "$delimiter" '{print $2}'`
days=`echo $line | awk -F "$delimiter" '{print $3}'`
flag=`echo $line | awk -F "$delimiter" '{print $4}'`
now=$(date +%s)

matching_files=`find $log_dir/$pattern`
for f in $matching_files ; do
 //code
done

然而我的误差低于

find: `magsubmit_*': No such file or directory
matching_files=

列出后我需要删除匹配的文件和目录,我可以使用单个命令吗?而不是rmf和rm -rf?

如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

如果您想逐个处理文件和目录,可以在Bash 4.0 +中执行此操作:

shopt -s globstar nullglob

pattern="your_pattern_goes_here"
for f in $log_dir/**/$pattern; do
  # matching files
done

for d in $log_dir/**/$pattern/; do
  # matching directories
done

我更喜欢Jonathan的方法,因为它更有效率。