我需要在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?
如何实现这个目标?
答案 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的方法,因为它更有效率。