導航:首頁 > 操作系統 > linux文件名匹配

linux文件名匹配

發布時間:2023-02-01 09:15:54

A. linux 根據簡單字元匹配文件夾中是否存在包含此字元的文件名

1、可以使用grep命令來查找當前目錄下所有文件中包含的某個特定字元。2、示例:查找當前目錄下所有帶有set的文件。說明:-r是遞歸查找-n是顯示行號*:表示當前目錄所有文件,也可以是某個文件名

B. Linux 批量修改文件名 rename

安裝
Ubuntu: sudo apt-get install rename

[options] 部分先不看,其實就是:

其中:

以上每個部分都可以使用正則表達式,執行命令之後,就把原來的 oldname 換成了 newname,非常方便。

此外也可以使用通配符:

當命令中最後 file 為 * 時表示,匹配當前文件夾下所有文件,如果為 ? 時則匹配只有一個字元的文件名。

這一行命令的解釋就是,對當前文件夾下滿足 * 的所有文件,文件名中包含 aaaa 字元的替換為 bbbb 其中 "s/pattern/new/" 中的 / 一個都不能少。

因為支持正則表達式,那麼 $ 表示的就是結尾,將結尾替換為 .txt 也就意味著給所有文件添加 .txt 的後綴

結尾有 .txt 的內容替換為空,也就是刪掉後綴了。

注意,這里只是刪除了文件名中的欄位,並不是把文件給刪掉。

參考文獻: http://einverne.github.io/post/2018/01/rename-files-batch.html

C. Linux中使用grep命令搜索文件名及文件內容的方法

從文件中搜索並顯示文件名
當你從不止一個的文件中搜索時,默認它將顯示文件名:
代碼如下:
grep
"word"
文件名
grep
root
/etc/*
示例輸出:
代碼如下:
/etc/bash.bashrc:
See
"man
sudo_root"
for
details.
/etc/crontab:17
*
*
*
*
root
cd
/
&&
run-parts
--report
/etc/cron.hourly
/etc/crontab:25
6
*
*
*
root
test
-x
/usr/sbin/anacron
||
(
cd
/
&&
run-parts
--report
/etc/cron.daily
)
/etc/crontab:47
6
*
*
7
root
test
-x
/usr/sbin/anacron
||
(
cd
/
&&
run-parts
--report
/etc/cron.weekly
)
/etc/crontab:52
6
1
*
*
root
test
-x
/usr/sbin/anacron
||
(
cd
/
&&
run-parts
--report
/etc/cron.monthly
)
/etc/group:root:x:0:
grep:
/etc/gshadow:
Permission
denied
/etc/logrotate.conf:
create
0664
root
utmp
/etc/logrotate.conf:
create
0660
root
utmp
每行開始的第一個部分是文件名(如:/etc/crontab、/etc/group)。使用
-l
選項可以只顯示文件名:
代碼如下:
grep
-l
"string"
filename
grep
-l
root
/etc/*
示例輸出:
代碼如下:
/etc/aliases
/etc/arpwatch.conf
grep:
/etc/at.deny:
Permission
denied
/etc/bash.bashrc
/etc/bash_completion
/etc/ca-certificates.conf
/etc/crontab
/etc/group
你也可以逆轉輸出;使用
-L
選項來輸出那些不匹配的文件的文件名:
代碼如下:
grep
-L
"word"
filename
grep
-L
root
/etc/*
示例輸出:
代碼如下:
/etc/apm
/etc/apparmor
/etc/apparmor.d
/etc/apport
/etc/apt
/etc/avahi
/etc/bash_completion.d
/etc/bindresvport.blacklist
/etc/blkid.conf
/etc/bluetooth
/etc/bogofilter.cf
/etc/bonobo-activation
/etc/brlapi.key
根據文件內容查找文件
輸入以下命令:
代碼如下:
grep
'string'
*.txt
grep
'main('
*.c
grep
'#include'
*.c
grep
'getChar*'
*.c
grep
-i
'ultra'
*.conf
grep
-iR
'ultra'
*.conf
其中
-i

忽略模式(匹配字元串
valid、
VALID、
ValID
)和輸入文件(匹配
file.c
FILE.c
FILE.C)的大小寫。
-R

遞歸讀取每個目錄下的所有文件。
高亮匹配到的模式
在搜索大量文件的時候你可以輕松地高亮模式:
代碼如下:
$
grep
--color=auto
-iR
'getChar();'
*.c
為查找到的模式顯示文件名和行號
你也許需要顯示文件名和行號:
代碼如下:
$
grep
--color=auto
-iRnH
'getChar();'
*.c
其中,
-n

在輸出的每行前面添加以
1
開始的行號。
-H

為每個匹配列印文件名。要搜索多個文件時這是默認選項。(LCTT
譯註:-h
選項強制隱藏文件名;另外
-l

-L
選項用於僅顯示匹配/不匹配的文件名,而
-H

-h用於控制在顯示匹配行前顯示/不顯示文件名,注意區分。)
代碼如下:
$grep
--color=auto
-nH
'DIR'
*
輸出樣例:
你也可以使用
find
命令:
代碼如下:
$
find
.
-name
"*.c"
-print
|
xargs
grep
"main("

D. linux下按文件名和文件內容查找文件

在當前目錄下,查找所有內容包含『abc'的文件

find . -type f | xargs grep -l 'abc'

find . -type f -exec grep -l 'abc' {} ;

(4)linux文件名匹配擴展閱讀:

linux查找文件命令find

根據部分文件名查找方法:

這個方法和在WINDOWS中查找已知的文件名方法是一樣的。不過在Linux中根據部分文件名查找文件的方法要比在WINDOWS中的同類查找方法要強大得多。

例如我們知道某個文件包含有srm這3個字母,那麼要找到系統中所有包含有這3個字母的文件是可以實現的,輸入:

find /etc -name '*srm*'

這個命令表明了Linux系統將在/etc整個目錄中查找所有的包含有srm這3個字母的文件,比如 absrmyz, tibc.srm等等符合條件的文件都能顯示出來。如果你還知道這個文件是由srm 這3個字母打頭的,那麼我們還可以省略最前面的星號,命令如下:

find/etc -name 'srm*'

這是只有像srmyz 這樣的文件才被查找出來,象absrmyz或者 absrm這樣的文件都不符合要求,不被顯示,這樣查找文件的效率和可靠性就大大增強了。

E. 如何在Linux下查找文件內容包含某個特定字元串的文件

概述

使用grep可以查找包含指定字元串的文件

步驟詳解

格式:

grep 「要查找的字元串」 文件名

例子:

grep "192.168.0.1" /etc

文件名可以使用基本正則表達式(BRE),例如, 查找test目錄下的所有文件,是否包含www.tycode.com字元串。

grep 「www.tycode.com」 /root/zzh/test/*

幾個常用的查詢指令:

1、查找時不區分字元串的大小寫

grep -i 「查找的字元串」 文件名

2、查找時使用正則表達式,匹配符合的字元串

grep -e 「正則表達式」 文件名

3、查找不匹配指定字元串的行:

grep -v 「被查找的字元串」 文件名

4、查找時顯示被查找字元串所在的行數

grep -n 「查找的字元串」 文件名

F. Linux中我想把匹配的文件名,導入到abc.txt文件中,下面的代碼正確嗎

應該差一點,在te前面加上^這個符號,這個符號的意思就是表示開頭,可能會更准確一點。
也可以使用另外一種查找方式,我認為可能更准確一點,就是
find ./ -name te* > abc.txt
重定向用>號就好,不需要轉到echo命令。

G. Linux簡要命令

所有命令的參數都是使用空格分隔的,例如 ls -l 。在這里ls即為命令名, -l 為此命令的參數,在 ls 與 -l 之間有一個空格,但是在 -l 內部不能有空格。

由於Linux繼承於Unix,而Unix操作系統在當初設計的時候,鍵盤並不可靠,而且敲鍵盤比較費勁(比如容易卡住),因此大部分命令都非常簡短,一般是完整的英文單詞去掉母音字母(aeiou)後的縮寫,這是一個歷史問題。

整個操作系統的磁碟都被劃分為很多個目錄(directory)或稱文件夾(folder),還有文件(file)。每個目錄下還可以有子目錄(sub direcotory)與文件,這樣就形成了一個樹狀結構,樹根為 / ,被稱為根目錄(root directory)。

任何時候 ,你都有一個 當前目錄 (Working Directory),你所有的操作都是相對於當前目錄做出的,以當前目錄為基準的目錄名或者文件名叫做相對目錄。例如若你的當前目錄是/home/alex,在/home/alex目錄下有一個叫Public的子目錄,還有一個叫log.txt的文件,則Public與log.txt就是相對目錄名與相對文件名。

每個目錄與文件都有一個全路徑(full path)名,這個全路徑以/開頭,遍歷整個目錄,直到最終的目錄名或者文件名為止。例如在Linux中,/下有etc、home、usr、lib等子目錄,而home目錄下有alex目錄,alex目錄下有Public目錄。則在這里Public的全路徑名就是 /home/alex/Public ,注意在這里必須大小寫一致。

當然也有可能在其它的名叫Public的目錄或者文件,但是它們的全路徑肯定是不一樣的。就像在中國有一個叫Alex的人,在美國也有一個叫Alex的人,他們可以分別稱為中國的Alex與美國的Alex,這就是他們的全路徑 ;)。全路徑又叫絕對路徑(absolute path)。

在Linux里,每個用戶都有一個家目錄(home directory),一般情況下用戶的家目錄就是/home目錄下相應的用戶名,例如alex用戶的家目錄就是/home/alex。

大部分文件都有擴展名(extension name),擴展名即為文件名最後一個點號(.)後面的文字,擴展名一般都表示了文件的類型。例如在log.txt這個文件名中,txt是擴展名,表示這個文件是一個文本文件(TeXT file),而文本文件一般都是可以直接查看內容的。而在house.1.jpg這個文件名中,其擴展名為jpg,表示這個文件是一個JPG格式的圖形文件,而圖形文件一般都是需要使用圖形軟體打開才能看到其內容的。

pwd 是Pring Working Directory的縮寫,此命令的作用是列印(print)當前的(working)目錄(directory)的全路徑名。

當你打開終端或者切換目錄之後,你最好運行一下 pwd 命令,確認當前的目錄是不是你想要切換的目錄。

pwd 命令一般不需要參數。

ls 是LiSt的縮寫,此命令的作用是列舉目錄下的文件與子目錄。

當你不帶參數運行 ls 命令時,此命令將列舉出當前目錄下的文件與子目錄的名稱。

當你加上-l參數運行 ls 命令時,此命令將列舉出當前目錄下的文件與子目錄的名稱,以及它們的修改時間、大小等信息。

你也可以使用 ls 命令列舉其它目錄下的文件與子目錄的名稱,例如,運行 ls / 即可列舉出根目錄下的文件與子目錄名,運行 ls -l / 即可列舉出根目錄下的文件與子目錄名,以及它們的修改時間、大小等信息。

cd 是Change Directory的縮寫,此命令的作用是切換當前的工作目錄。

例如,運行 cd /home/alex 將把當前目錄切換為 /home/alex 。當然,cd後面的參數也可以是相對目錄。例如若當前目錄為 /home/alex ,而 /home/alex 目錄下有一個目錄叫Public,則運行 cd Public 則會將當前目錄變為 /home/alex/Public 。

如果cd命令後面不接任何參數,則將把當前目錄設置為用戶的家目錄。

cp 是CoPy的縮寫,此命令的作用是復制文件或者文件夾。

例如,運行 cp 1.txt 2.txt 將把當前目錄下的 1.txt 文件復製成 2.txt 文件。運行 cp 1.txt /tmp/2.txt 將把當前目錄下的 1.txt 復製成 /tmp/2.txt 文件,運行 cp 1.txt /home/alex/ 將把 1.txt 文件復制到 /home/alex/ 目錄下。

rm 是ReMove的縮寫,此命令的作用是刪除文件或者文件夾。

例如,運行 rm 2.txt 將刪除當前目錄下的 2.txt 文件,運行 rm /tmp/2.txt 將刪除 /tmp/2.txt 文件。

你也可以使用 rm 來刪除目錄,此時需要帶上-R參數(recursive,即遞歸的意思),例如 rm -R /tmp/abc 將刪除整個 /tmp/abc 目錄。

刪除時一般都會詢問你讓你確認是否要刪除,如果你不需要被提問確認,可以加上-f參數,例如 rm -f /tmp/1.txt 。

mv 是MoVe的縮寫,此命令的作用是移動文件或者文件夾,或說是為文件或者文件夾改名。注意,一旦移動成功,則原來的文件或者文件夾就不存在了。

例如,運行 mv 1.txt 2.txt 將把當前目錄下的 1.txt 改名為 2.txt ,運行 mv 1.txt /tmp/2.txt 將把當前目錄下的 1.txt 移動成為 /tmp/2.txt 文件。

mkdir 是MaKe DIRectory的縮寫,此命令的作用是創建目錄。

例如 mkdir abc 將在當前目錄下創建一個名為 abc 的目錄, mkdir /tmp/xyz123 將在 /tmp 目錄下創建一個名為 xyz123 的目錄。

mkdir 可以帶-p參數,這樣即可同時創建多層目錄,例如 mkdir -p a/b/c/123 將在當前目錄下創建a目錄,在a目錄下創建b目錄,在b目錄下創建c目錄,在c目錄下創建123目錄。

在Linux下還有幾個特殊的目錄,它們分別是:

有一個特殊的符號表示文件名匹配,即 * 。例如 cp *.txt /tmp/ 將把當前目錄下的以 .txt 結尾的文件名都復制到 /tmp/ 目錄下, ls a*.txt 將列舉出當前目錄下所有以 a 開頭,以 .txt 結尾的文件名與目錄, rm /tmp/1*log 將刪除 /tmp 目錄下所有文件名以 1 開頭,以 log 結尾的文件。

所有以 . 開頭的文件與目錄都表示是隱藏文件 / 目錄,例如 .vimrc ,例如 .. ,在 ls 時一般是看不到這些文件與目錄的,如果想要看到,需要使用 ls 的 -a 參數,例如 ls -al 。

Linux下有大量命令/軟體,在此我們僅列舉幾個可能會用到的,可以在使用過程中慢慢熟悉。

H. Linux find 命令詳解

find 命令的基本結構如下:
find [paths] [expression] [actions]

find 命令接受一個或多個 路徑 ( paths )作為搜索范圍,並在該路徑下 遞歸 地搜索。即檢索完指定的目錄後,還會對該目錄下的子目錄進行檢索,以及子目錄下的子目錄。。。直到到達目錄樹底部。

默認情況下(不帶任何搜索條件),find 命令會返回指定目錄下的 所有文件 ,所以常常需要通過特定的 expression 對結果進行 篩選

find 命令默認的 action 是將所有檢索結果列印至標准輸出。可以通過自定義 action ,讓 find 命令對搜索到的結果執行特定的操作。

這里先不做詳細解釋,簡單地測試下 find 命令:

find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。

-name 和 -iname 兩個選項都支持 wildcards 。如:

find /usr -name '*.txt' 查找 /usr 目錄下所有文件名以 .txt 結尾的文件
find /usr -name '????' 查找 /usr 目錄下所有文件名剛好為 4 個字元的文件

有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項。

如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'

如果只想搜索得到文件 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。

-type 選項最常用的參數如下:

find /usr -type d -name 'python*' 檢索 /usr 下所有文件名以 python 開頭的 目錄

find 命令支持 -empty 選項用來檢索 為空 的文件或目錄。空文件即文件里沒有任何內容,空目錄即目錄中沒有任何文件或子目錄。

find ~ -type d -empty 檢索用戶主目錄下所有的空目錄

find 命令也允許用戶對當前的匹配條件進行 「反義」 (類似於 邏輯非 操作)。

如需要檢索 /usr 下所有文件名 以 .txt 為後綴的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'

也可以「翻轉」任何其他的篩選條件,如:
find /usr -type f ! -empty 檢索 /usr 下所有內容不為空的文件

為了檢索歸屬於特定用戶的文件或目錄,可以使用 -user 選項。

find / -type f -user starky 檢索根目錄下所有屬主為 starky 的文件

類似於 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。

有些時候,需要根據文件創建或修改的時間進行檢索。

Linux 系統中,與文件相關聯的時間參數有以下三種:

與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。

這三個選項的使用遵循以下示例中的規則:

find /usr -type f -mtime 2 檢索 /usr 下兩天前被修改過的文件

如果覺得 -mtime 等選項以 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項:
find /usr -type f -mtime +50 -mtime -100 檢索 /usr 下 50 到 100 天之前修改過的文件
find /usr -type f -mtime 2 -amin 5 檢索 /usr 下兩天前被修改過且 5 分鍾前又讀取過的文件

-size 選項允許用戶通過文件大小進行搜索(只適用於文件,目錄沒有大小……)。

表示文件大小的單位由以下字元組成:

另外,還可以使用 + 或 - 符號表示 大於 小於 當前條件。

find / -size +1G 檢索文件大小高於 1 GB 的文件

find 命令可以使用 -perm 選項以文件許可權為依據進行搜索。

如需要檢索 /usr 目錄下許可權為 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx

搜索 /usr 目錄下所有許可權為 r-xr-xr-x (即系統中的所有用戶都只有讀寫許可權)的文件和目錄,可以使用以下命令:
find /usr -perm a=rx

很多時候,我們只想匹配文件許可權的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行許可權,而不用管其讀寫許可權是什麼。

上述的需求可以通過以下命令實現: find / -type f -perm /a=x
其中 a=x 前面的 / 符號即用來表示只匹配許可權的某個子集(執行許可權),而不用關心其他許可權的具體設置。

-perm 選項也支持數字形式的文件許可權標記。

find /usr -perm 644 搜索 /usr 目錄下許可權為 644 (即 rwxr-xr-x )的文件

find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大。可以使用 -maxdepth 限制 find 命令遞歸的層數。

find / -maxdepth 3 搜索時向下遞歸的層數最大為 3

在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉
實際上 find 命令支持 「and」 「or」 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。

此外還可以使用 小括弧 對搜索條件進行 分組 。注意 find 命令中的小括弧常需要用 單引號 包裹起來。因小括弧在 Shell 中有特殊的含義。

如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
find /usr -type d -name 'python*'

該命令等同於:
find /usr -type d -a -name 'python*'

更復雜的組合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f

-delete 選項可以用來刪除搜索到的文件和目錄。

如刪除 home 目錄下所有的空目錄:
find ~ -type d -empty -delete

-exec 選項可以對搜索到的結果執行特定的命令。

如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ''

其中的 大括弧 ( {} )作為檢索到的文件的 佔位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來。
每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然後執行 -exec 後面的命令一次。

另一個很重要的用法是,在多個文件中檢索某個指定的字元串。
如在用戶主目錄下的所有文件中檢索字元串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ''

創建 Gzip 格式的壓縮文件的命令為: tar -czvf filename.tar.gz <list of files>

現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ''

實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。
原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項後面的壓縮命令。導致先前生成的壓縮包被覆蓋。

可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給後面的壓縮命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +

如果想瀏覽搜索到的文件(目錄)的詳細信息(如許可權和大小等),可以直接使用 -ls 選項。

find / -type file -size +1G -ls 瀏覽所有 1G 以上大小的文件的詳細信息

A Guide to the Linux 「Find」 Command
find 命令手冊 : man find

I. Linux文件名替換

1.用for靈活,文件名中字元替換,加日期等都可
先用下面語句測試一下
for
i
in
*aa*
;do
nn=$(echo
$i
|
sed
's/aa/bb/')
;echo
"$nn";done
保險起見,只拷貝
for
i
in
*aa*
;do
nn=$(echo
$i
|
sed
's/aa/bb/')
;cp
"$i"
"$nn";done
這是更名,慎用
for
i
in
*aa*
;do
nn=$(echo
$i
|
sed
's/aa/bb/')
;mv
"$i"
"$nn";done
2.用rename簡潔
先用-n開關測試
rename
-n
's/aa/bb/'
*
測試無誤去掉-n進行更名
rename
's/aa/bb/'
*

閱讀全文

與linux文件名匹配相關的資料

熱點內容
歐美同性大尺度電影 瀏覽:798
如何練習解壓 瀏覽:391
國外一部關於兒子跟後媽的叫什麼流浪的電影 瀏覽:906
免費電影鬼片 瀏覽:170
男主姓傅的小說 瀏覽:661
大胸部的女人電影 瀏覽:24
劉德華返老還童的電影叫什麼 瀏覽:264
羅莎卡拉喬洛 bodyguard 瀏覽:964
金玉王朝完整番外txt 瀏覽:558
需要錢觀看的網站 瀏覽:23
不可能的世界小說免費看 瀏覽:744
3d左右分屏電影網站 瀏覽:378
擁有系統幫助國家的小說 瀏覽:709
哦哦叱吒風雨里古惑仔粵語歌 瀏覽:138
銷售女王韓國 瀏覽:432
出軌的電影歐美 瀏覽:463
女生適合學編程 瀏覽:942
cad中的移動命令 瀏覽:685
0855影視在線看 瀏覽:11
求小仙兒有聲小說資源 瀏覽:993