次のコマンドを使用して、nix (Linux、AIX、Sunos、HPUX) プラットフォームでディレクトリ リストを取得します。
指示
ls -latr
出力
drwxr-xr-x 2 ricky support 4096 Aug 29 11:59 lib
-rwxrwxrwx 1 ricky support 924 Aug 29 12:00 initservice.sh
cksum
コマンドは、CRC チェックサムを取得するために使用されます。
これらの nix (Linux、AIX、Sunos、HPUX) プラットフォームで以下の形式を維持しながら、以下のように各ファイル (ディレクトリ リストも含む) の後に CRC チェックサムを追加するにはどうすればよいですか?
drwxr-xr-x 2 ricky support 4096 Aug 29 11:59 lib
-rwxrwxrwx 1 ricky support 924 Aug 29 12:00 initservice.sh 4287252281
更新メモ: サードパーティのアプリケーションはありません。Java/Groovy を使用して出力を解析し、最終的に groovy XmlSlurper を使用して xml を形成する特定の形式にします (XML は約 5MB のサイズで生成されます)。
"permission","hardlink","owner","group","fsize","month","date","time","filename","checksum"
すべての提案を歓迎します! :)
私のコードで更新
md5sum
しかし、ここではLinux からのコマンドと同様の出力を与える md5hex を計算しています。cksum
したがって、ライセンスの問題でjacksum bczを使用できないため、もはやそうではありません:(
class CheckSumCRC32 {
public def getFileListing(String file){
def dir = new File(file)
def filename = null
def md5sum = null
def filesize = null
def lastmodified = null
def lastmodifiedDate = null
def lastmodifiedTime = null
def permission = null
Format formatter = null
def list=[]
if(dir.exists()){
dir.eachFileRecurse (FileType.FILES) { fname ->
list << fname
}
list.each{fileob->
try{
md5sum=getMD5CheckSum(fileob.toString())
filesize=fileob.length()+"b"
lastmodified=new Date(fileob.lastModified())
lastmodifiedDate=lastmodified.format('dd/MM/yyyy')
formatter=new SimpleDateFormat("hh:mm:ss a")
lastmodifiedTime=formatter.format(lastmodified)
permission=getReadPermissions(fileob)+getWritePermissions(fileob)+getExecutePermissions(fileob)
filename=getRelativePath("E:\\\\temp\\\\recurssive\\\\",fileob.toString())
println "$filename, $md5sum, $lastmodifiedDate, $filesize, $permission, $lastmodifiedDate, $lastmodifiedTime "
}
catch(IOException io){
println io
}
catch(FileNotFoundException fne){
println fne
}
catch(Exception e){
println e
}
}
}
}
public def getReadPermissions(def file){
String temp="-"
if(file.canRead())temp="r"
return temp
}
public def getWritePermissions(def file){
String temp="-"
if(file.canWrite())temp="w"
return temp
}
public def getExecutePermissions(def file){
String temp="-"
if(file.canExecute())temp="x"
return temp
}
public def getRelativePath(def main, def file){""
return file.toString().replaceAll(main, "")
}
public static void main(String[] args) {
CheckSumCRC32 crc = new CheckSumCRC32();
crc.getFileListing("E:\\temp\\recurssive")
}
}
出力
release.zip, 25f995583144bebff729086ae6ec0eb2, 04/06/2012, 6301510b, rwx, 04/06/2012, 02:46:32 PM
file\check\release-1.0.zip, 3cc0f2b13778129c0cc41fb2fdc7a85f, 18/07/2012, 11786307b, rwx, 18/07/2012, 04:13:47 PM
file\Dedicated.mp3, 238f793f0b80e7eacf5fac31d23c65d4, 04/05/2010, 4650908b, rwx, 04/05/2010, 10:45:32 AM
それでも、ハードリンク、所有者、およびグループを計算する方法が必要です。ネットで検索したところ、Java7にはこの機能があり、Java6に固執しているようです。何か助けはありますか?