首頁>Computer>source

我在windows機器上的檔案名中有很多標有CRC校驗和的檔案.示例:

filename_[000000].extension

我知道對於基於Linux的系統,有很多選項可以檢查/計算CRC校驗和,但是我不知道可以計算檔案校驗和然後通過重命名檔案或驗證校驗和来"盖章"的選項.通過將計算結果与檔案名上的校驗和进行比较来校驗和。

是否存在某種终端命令可以複製這種校驗和驗證?

最新回復
  • 6月前
    1 #

    您可以結合使用良好的"單用途" Linux工具来執行此操作.通過" CRC",我假設您的意思是CRC32。

    To add the checksum to each file

    find . -maxdepth 1 -type f |while read -r FILE; do
        mv -i "$FILE" "${FILE%.*}"_[$(crc32 "$FILE")]."${FILE##*.}"
    done
    

    To verify the correct checksum

    crc32 *
    

    對於每个已標記的檔案, crc32 將顯示 OK 或(例如) BAD 93ed200a != 299f65cb 在檔案名之後。

    If you don't have the crc32 binary

    sudo apt install libarchive-zip-perl
    

  • 6月前
    2 #

    Linux命令列非常模組化,我可以想到许多實現此目的的方法.除非您執行指令碼,否則可能無法作為一个命令解決方案優雅地完成某件事,但是邏輯很簡單-进行校驗和,然後重命名檔案,並附加校驗和.我註意到我使用了sha512和,但是您可以執行大多數其他型別的校驗和,包括可能更短的md5。

    我想出了一个唯一的1線,如下所示:

    mv test.file test-\[`sha512sum test.file| cut -f1 -d" "`\].file
    

    要使其更通用,在命令列上会很混亂,但是使用指令碼相当容易-您可以使用指令碼將檔案分為擴充套件名前後的部分。

    驗證輸出將取決於重命名檔案的確切格式,並且由於檔案名的格式,這可能希望指令碼執行此操作。

    可以通過程式設計方式檢查結果,但是要複雜得多,因為這將是極其複雜的1-liner。

    這是一个指令碼,它將驗證使用上述1个衬纸建立的檔案

    #! /bin/bash
    if [ $1. == '.' ]
    then
        echo Usage: $0 filename
    fi
    FILENAMECHECKSUM=`echo $1 | cut -f2 -d'[' | cut -f1 -d']'`
    FILECONTENTCHECKSUM=`sha512sum $1 | cut -f1 -d" "`
    if [ $FILENAMECHECKSUM == $FILECONTENTCHECKSUM ]
    then
        echo "Checksum OK"
    else
        echo "Checksum mismatch"
    fi
    
    

相似問題

  • networking:从網路外部看不到轉發的埠
  • windows 10 v20h2:如何使用PowerShell啟用新的可選功能?