find_date=$(stat -c %y $files | awk '{print $1}')
#Grabbing each file from the array
for file in "${files[@]}"; do
# We get the date part
file_date=''
#Reading the date and breaking by the - mark
IFS="-" read -ra parts <<< "$file"
unset file_date
find_date=$(stat -c %y $files | awk '{print $1}')
echo "File Date: " $find_date
for t in "${find_date[@]}"; do
#Putting the date into the array
if [[ $t == [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] ]]; then
file_date=$t
break
fi
done
echo "T: " $t
所以一切正常但是for循环应该移动到下一个文件。当我运行我的脚本时,我注意到STAT命令的所有错误都不起作用,因为在它执行第一个文件之后它仍在尝试STAT该文件而不是列表中的下一个
答案 0 :(得分:1)
重置file_date,使其不“记住”上一循环的结果,即:
unset file_date
for t in "${find_date[@]}"; do
#Putting the date into the array
if [[ $t == [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] ]]; then
file_date=$t
break
fi
done
答案 1 :(得分:0)
这一行:
find_date=$(stat -c %y $files | awk '{print $1}')
files
是数组,因此每次循环时$files
都会扩展到该数组的第一个元素。您希望使用用于迭代数组的file
变量。
for file in "${files[@]}"; do
...
find_date=$(stat -c %y "$file" | awk '{print $1}')
# ^^^^^^^
...
done