find命令能夠經過查看文件內容來找出特定類型的文件,在UNIX/ Linux系統中,文件類型並非由文件擴展名來決定的(windows中卻正是這麼作的),file命令的目的是從多個文件中收集文件類型統計信息。輸入 file --help查看幫助提示信息,以下:java
amosli@amosli-pc:~$ file --help Usage: file [OPTION...] [FILE...] Determine type of FILEs. --help display this help and exit -v, --version output version information and exit -m, --magic-file LIST use LIST as a colon-separated list of magic number files -z, --uncompress try to look inside compressed files -b, --brief do not prepend filenames to output lines -c, --checking-printout print the parsed form of the magic file, use in conjunction with -m to debug a new magic file before installing it -e, --exclude TEST exclude TEST from the list of test to be performed for file. Valid tests are: ascii, apptype, compress, elf, soft, tar, tokens, troff -f, --files-from FILE read the filenames to be examined from FILE -F, --separator STRING use string as separator instead of `:' -i, --mime output MIME type strings (--mime-type and --mime-encoding) --apple output the Apple CREATOR/TYPE --mime-type output the MIME type --mime-encoding output the MIME encoding -k, --keep-going don't stop at the first match -l, --list list magic strength -L, --dereference follow symlinks (default) -h, --no-dereference don't follow symlinks -n, --no-buffer do not buffer output -N, --no-pad do not pad output -0, --print0 terminate filenames with ASCII NUL -p, --preserve-date preserve access times on files -r, --raw don't translate unprintable chars to \ooo -s, --special-files treat special (block/char devices) files as ordinary ones -C, --compile compile file specified by -m -d, --debug print debugging messages
語法:算法
file [OPTION...] [FILE...] file[必要參數][選擇參數][文件或者目錄]
必要參數
-b 文件名不顯示
-c 顯示詳細處理信息
-L 操做對象爲符號連接所指向的對象
-z 壓縮文件的處理
-C 列出magic.mgc的輸出
-n 將結果輸出到標準輸出
-f<文件名> 指定文件名
-m<文件名> 指定魔法數字名windows
選擇參數
--help 顯示幫助信息
-v 顯示版本信息app
因此加上參數的語法也能夠改寫爲:eclipse
file [-beLvz][-f <名稱文件>][-m <魔法數字文件>...][文件或目錄...]
實例:ide
1.查看全部文件類型 file *函數
amosli@amosli-pc:~$ file * bank: directory c:javagc.log: empty data.txt: ASCII text da.txt: ASCII text ddd: UTF-8 Unicode text, with very long lines eclipse222: setgid directory examples.desktop: UTF-8 Unicode text home: Python script, UTF-8 Unicode text executable learn: directory Public: directory scriptfifo: fifo (named pipe) socialcredit_metrix.py: Python script, UTF-8 Unicode text executable sorted.txt: ASCII text temp.png: PNG image data, 1218 x 717, 8-bit/color RGBA, non-interlaced tmp.zip: Zip archive data, at least v2.0 to extract
第一列爲文件名稱,第二列爲文件類型。this
2.查看具體某一文件的類型:file filenamespa
amosli@amosli-pc:~$ file data.txt data.txt: ASCII text
3.-b參數,打印出不包含文件名的文件類型信息:debug
amosli@amosli-pc:~$ file -b data.txt ASCII text
4.-z 參數,能夠獲取用gzip、zip壓縮過的文件的類型
amosli@amosli-pc:~$ file -z tmp.zip tmp.zip: empty (Zip archive data, at least v2.0 to extract)
5.-n參數,將信息標準輸出
amosli@amosli-pc:~/learn/re$ ls a.txt amosli@amosli-pc:~/learn/re$ file -n a.txt > b amosli@amosli-pc:~/learn/re$ ls a.txt b
在平常工做中有時候想要比較兩個文件的差別,通常來講沒有什麼比較好的辦法,以前嘗過md5sum和sha1能夠檢驗文件的md5值是否一致,但想了解文件的內容具體有哪些差別就比較困難了,下面開始介紹diff命令來幫助解決這一難題:
diff --help看一下提示,因爲提示信息至關多,很是佔篇幅這裏就不貼出來了。
語法:
diff [OPTION]... FILES diff[參數][文件1或目錄1][文件2或目錄2]
參數:
- 指定要顯示多少行的文本。此參數必須與-c或-u參數一併使用。 -a或--text diff預設只會逐行比較文本文件。 -b或--ignore-space-change 不檢查空格字符的不一樣。 -B或--ignore-blank-lines 不檢查空白行。 -c 顯示所有內文,並標出不一樣之處。 -C或--context 與執行"-c-"指令相同。 -d或--minimal 使用不一樣的演算法,以較小的單位來作比較。 -D或ifdef 此參數的輸出格式可用於前置處理器巨集。 -e或--ed 此參數的輸出格式可用於ed的script文件。 -f或-forward-ed 輸出的格式相似ed的script文件,但按照原來文件的順序來顯示不一樣處。 -H或--speed-large-files 比較大文件時,可加快速度。 -l或--ignore-matching-lines 若兩個文件在某幾行有所不一樣,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差別。 -i或--ignore-case 不檢查大小寫的不一樣。 -l或--paginate 將結果交由pr程序來分頁。 -n或--rcs 將比較結果以RCS的格式來顯示。 -N或--new-file 在比較目錄時,若文件A僅出如今某個目錄中,預設會顯示:Only in目錄:文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。 -p 若比較的文件爲C語言的程序碼文件時,顯示差別所在的函數名稱。 -P或--unidirectional-new-file 與-N相似,但只有當第二個目錄包含了一個第一個目錄所沒有的文件時,纔會將這個文件與空白的文件作比較。 -q或--brief 僅顯示有無差別,不顯示詳細的信息。 -r或--recursive 比較子目錄中的文件。 -s或--report-identical-files 若沒有發現任何差別,仍然顯示信息。 -S或--starting-file 在比較目錄時,從指定的文件開始比較。 -t或--expand-tabs 在輸出時,將tab字符展開。 -T或--initial-tab 在每行前面加上tab字符以便對齊。 -u,-U或--unified= 以合併的方式來顯示文件內容的不一樣。 -v或--version 顯示版本信息。 -w或--ignore-all-space 忽略所有的空格字符。 -W或--width 在使用-y參數時,指定欄寬。 -x或--exclude 不比較選項中所指定的文件或目錄。 -X或--exclude-from 您能夠將文件或目錄類型存成文本文件,而後在=中指定此文本文件。 -y或--side-by-side 以並列的方式顯示文件的異同之處。 --help 顯示幫助。 --left-column 在使用-y參數時,若兩個文件某一行內容相同,則僅在左側的欄位顯示該行內容。 --suppress-common-lines 在使用-y參數時,僅顯示不一樣之處。
實例:
一、比較兩個txt文件,version1.txt,version2.txt
amosli@amosli-pc:~/learn/re$ cat version1.txt version2.txt -n 1 this is test #version1.txt 2 line2 3 line3 4 line4 5 this is endding
6 this is test #version2.txt 7 line2 8 line4 9 this is endding 10 test over
amosli@amosli-pc:~/learn/re$ diff version1.txt version2.txt 3d2 < line3 5a5 > test over
上面的輸出是非一體化的(non-unified)形式的輸出。
2.那麼在使用-u參數的狀況下一體化形式的輸出以下:
amosli@amosli-pc:~/learn/re$ diff -u version1.txt version2.txt --- version1.txt 2013-12-28 01:35:50.624355632 +0800 +++ version2.txt 2013-12-28 01:37:35.736876852 +0800 @@ -1,5 +1,5 @@ this is test line2 -line3 line4 this is endding +test over
-u參數用於生成一體化的輸出,由於一體化的輸出更利於閱讀,因此通常狀況下-u參數使用頻率較高.
-u參數的英文提示以下:
-u, -U NUM, --unified[=NUM] output NUM (default 3) lines of unified context
3.有沒有更利於閱讀的方式了呢?-y參數很明顯要好於以上二者
amosli@amosli-pc:~/learn/re$ diff -y version1.txt version2.txt this is test this is test line2 line2 line3 < line4 line4 this is endding this is endding > test over
-y參數的英文提示信息以下:
-y, --side-by-side output in two columns
分爲兩列進行顯示,對不一樣之處進行標記,至關方便。
說明:
「<」表示後面文件比前面文件少了1行內容
「>」表示後面文件比前面文件多了1行內容
4.將兩個文件的不一樣之處重定向輸出到一個文件
amosli@amosli-pc:~/learn/re$ diff -u version1.txt version2.txt > version.patch amosli@amosli-pc:~/learn/re$ cat version.patch --- version1.txt 2013-12-28 01:35:50.624355632 +0800 +++ version2.txt 2013-12-28 01:37:35.736876852 +0800 @@ -1,5 +1,5 @@ this is test line2 -line3 line4 this is endding +test over
5.對文件version1.txt進行修改使其和version2.txt同樣
amosli@amosli-pc:~/learn/re$ patch -p1 version1.txt < version.patch patching file version1.txt amosli@amosli-pc:~/learn/re$ cat version1.txt this is test line2 line4 this is endding test over amosli@amosli-pc:~/learn/re$ cat version2.txt this is test line2 line4 this is endding test over
6.目錄之間的比較
語法/參數:
diff -Naur directory1 directory2 -N 全部缺失的文件做爲空文件 -a 全部文件視爲文本文件 -u 一體化輸出 -r 遞歸遍歷
例:
建立不一樣的子目錄進行比較:
amosli@amosli-pc:~/learn/re$ mkdir -p dd/db amosli@amosli-pc:~/learn/re$ mkdir -p db/dc amosli@amosli-pc:~/learn/re$ diff dd db Only in dd: db Only in db: dc
建立子目錄相同的目錄進行比較:
amosli@amosli-pc:~/learn/re$ mkdir -p d1/d2/d3 amosli@amosli-pc:~/learn/re$ mkdir -p d2/d2/d3 amosli@amosli-pc:~/learn/re$ diff -u d1 d2 Common subdirectories: d1/d2 and d2/d2