簡體   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