繁体   English   中英

某些长度的匹配文件仅包含数字?

[英]Matching files of certain length that only contain digits?

我一直在尝试匹配目录中所有文件名,这些文件名长6个字符,并且仅包含数字。 我一直在想办法使其正常工作,但是没有运气。 这就是我所拥有的:

for f in "$path"*
do
        if echo "$f" | tail -c 7 | grep "^[[:digit:]][:digit:]]*$"; then
                echo "$f is good"
        else
                echo "$f" | tail -c 7
        fi
done

每次我运行脚本时,其他脚本都会运行,而我只会从目录中的每个文件中获取最后6个字符。 我不想进入目录来检查文件,所以我认为最后6个检查是个好主意(也许不是)。 我最终希望重定向$ path中所有长度为6个字符和所有数字的所有文件。 我只是不知道如何匹配。 谢谢!

这是一个只列出文件名的衬里:

for f in "$path"[0-9][0-9][0-9][0-9][0-9][0-9];do echo ${f##*/};done

如果您想要完整的路径,只需省略##*/

ls [0-9][0-9][0-9][0-9][0-9][0-9]

或者,如果您只想编辑脚本:

for f in "$path"*
do
    if echo "$f" | tail -c 7 | grep "^[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]$"; then
            echo "$f is good"
    else
            echo "$f" | tail -c 7
    fi
done

或者,只需使用正则表达式模式:

'^[[:digit:]]{6}$'

使用basename获取路径名的文件名部分,并进行以下测试:

for f in "$path"*
do
    base=$(basename "$f")
    case "$base" in
        [0-9][0-9][0-9][0-9][0-9][0-9])
            echo "$f is good" ;;
        *) echo "$base" ;;
    esac
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM