Linux Find komanda ir spēcīgs rīks, kas ļauj sistēmas administratoriem atrast un pārvaldīt failus un direktorijus, pamatojoties uz plašu meklēšanas kritēriju klāstu. Tā var atrast direktorijus un failus pēc to nosaukuma, veida vai paplašinājuma, lieluma, atļaujām utt.
Papildus failu un direktoriju atrašanai, meklēšanas komandas apvienošana ar citām ļauj jums rīkoties ar rezultātiem. Pievienojot opciju -exec, sistēmas administratori var palaist ārējās komandas un veikt tādas darbības kā kopēšana, pārvietošana, dzēšana vai to failu atļauju maiņa, kas atbilst norādītajiem kritērijiem, piemēram, izmēram, nosaukumam utt.
Šajā rakstā mēs sāksim, izskaidrojot pamata Linux atrašanas komandas ar piemēriem. Tas parādīs, kā atrast failus un direktorijus. Pēc tam mēs parādīsim, kā izmantot opciju -exec, lai darbotos ar failiem vai direktorijiem, pamatojoties uz to lielumu, atļaujām utt.
Vispārējā meklēšanas komandas sintakse ir
find {path} {name -of-file or dir-to-search} {action-to-take}
kur,
- ceļš norāda direktoriju.
- faila nosaukums vai dir-to-Search : meklējamā faila vai direktorija nosaukums
- veicamā darbība: piemēram, kopēšana, dzēšana, pārvietošana utt.
Šajā apmācībā mēs paskaidrosim, kā atrast failus un direktorijus, kas atbilst noteiktiem modeļiem. Mēs arī redzēsim, kā veikt darbības ar failiem vai direktorijiem, kurus atrod komanda find. Rokasgrāmata ir balstīta uz Ubuntu, bet ir piemērojama lielākajai daļai Linux izplatījumu un versiju.
Atrodiet failus un direktorijus
Atrodiet noteiktus failus pēc nosaukuma vai paplašinājuma
Lai meklētu noteiktu failu, palaidiet šo komandu no saknes (/). Komanda satur precīzu faila nosaukumu, kuru meklējat.
find . -name file22.txt
Izvade
./test/file22.txt ./sales/file22.txt
Lūdzu, ņemiet vērā, ka rezultātos ir iekļauts ceļš. Tas ir svarīgi, ja nezināt direktoriju, kurā atrodas fails, vai ja tas atrodas vairākās vietās.
Varat arī meklēt failu citā direktorijā, atrodoties pašreizējā atrašanās vietā. Šajā gadījumā jums ir jānorāda ceļš uz direktoriju, kurā vēlaties meklēt.
find ./test -name file22.txt
Meklē konkrētus failus citā direktorijā
Mūsu gadījumā mēs testa direktorijā meklēsim visus, kas sākas ar burtu failu.
find ./test -name file*
Izvade
./test/file22.txt ./test/file30.doc ./test/file1.txt ./test/file5,doc
Meklēt failus pēc paplašinājuma
Lai atrastu failu Linux ar noteiktu paplašinājumu, pievienojiet to komandai.
find . -name *.txt
Izvade
./test/subtest/subfil.txt ./test/file22.txt ./test/file1.txt ./home1/files32.txt ./home2/file22.txt ./qa/tags.txt
Atrodiet failus un direktorijus pēc nosaukuma
Izmantojiet tālāk norādīto komandu, lai meklētu failus un direktorijus, kas sākas ar burtiem qa. Mūsu datorā ir faili qatree.txt un qa.txt, kā arī direktorijs ar nosaukumu qa.
Ja izpildām komandu;
find ./ -name "qa*"
Tas atgriež šādu izvadi
./test/qatree.pdf ./test/qa.txt ./home/qa
Komanda atgriež gan failus, gan direktorijus, kas atbilst meklēšanas kritērijiem. Lai atrastu tikai failus vai direktorijus, tas jānorāda komandā.
Atrodiet tikai failus vai direktorijus
Tikai failiem izmantojiet f tipa slēdzi.
Tikai faili
find ./ -type f -name "qa*"
Izvade
./test/qatree.pdf ./test/qa.txt
Tikai katalogi
Pievienojiet d tipa opciju, lai atrastu tikai direktorijus.
find ./ -type d -name "qa*"
Izvade
./home/qa
Atrast komanda nav reģistrjutīga
Visi meklējumi ar slēdzi -name ir reģistrjutīgi un nedos rezultātus ar lielajiem burtiem. Lai iegūtu visus gadījumus, izmantojiet opciju -name.
find ./ -iname "qa*"
Izvade
./test/qatree.pdf ./test/qa.txt ./test/QAtest.txt ./home/qa
Meklējiet failu no vairākiem direktorijiem
Lai atrastu failus dažādos direktorijos, komandā pievienojiet to ceļus. Mūsu gadījumā mēs pārbaudīsim testa un ciparu direktorijus.
find ./test ./numeric -name file22.txt -type f
Izvade
./test/file22.txt /root/numeric/file22.txt
Atrodiet vairākus failus ar dažādiem paplašinājumiem no visiem direktorijiem
Varat izmantot komandu find, lai atrastu vairākus failus, kuriem ir dažādi paplašinājumi, piemēram, *.doc, *.txt *.pdf utt. To var izdarīt atsevišķi, pa vienam paplašinājumam vai izmantojot tikai vienu komandu, kas ietver visus vēlamos paplašinājumus.
atrast. -type f ( -name “*.txt” -o -name “*.pdf” -o -name “*.doc”)
izvade
./test/subtest/subfil.txt ./test/qatree.pdf ./test/file22.txt ./test/qa.txt ./test/file30.doc ./books/acro.pdf ./data1/FILE22.txt ./docs/files32.txt
Atrodiet failus, kas satur noteiktu tekstu
Dažreiz jūs vēlaties piekļūt failam, kurā ir noteikts teksts, bet nevarat atcerēties tā faila nosaukumu vai atrašanās vietu. Šī komanda ļauj atrast visus failus, kas satur jūsu mērķa tekstu.
Lai meklētu visus failus, kas satur vārdu hiperkonverģence”, izmantojiet;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Izvade
/root/numeric/hci /root/HCIP
Opcija –i ļauj komandai ignorēt gadījumus un atrast tekstu neatkarīgi no tā, vai tas ir rakstīts ar lielo burtu vai bez tā, piemēram, hiperkonverģence, hiperkonverģence utt.
Lai meklētu failus noteiktā direktorijā, vienkārši pievienojiet tos komandai
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Izvade
./numeric/hci
Izpētiet citus grep komandu piemērus.
Atrodiet failus un direktorijus, pamatojoties uz lielumu
Jūs varat atrast visus failus vai direktorijus, kas ir mazāki, vienādi vai lielāki par noteiktu lielumu, noteiktā diapazonā vai tukši. Izmantojiet atbilstošā izmēra formātu atkarībā no meklējamo failu vai direktoriju veida.
Izmēru opcijas ietver;
c – baiti
k – kilobaiti
M – megabaiti
G – gigabaiti
Atrodiet noteikta izmēra failus – 30 MB
Lai meklētu, atrodiet visus 30 MB failus
find / -size 30M
Atrodiet failus, kas ir lielāki par norādīto izmēru
find -size +2M
Izvade
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Pašreizējā direktorijā atrodiet failus, kas ir mazāki par 10 MB
find . -type f -size -10M
Atrodiet failus, kuru izmērs ir no 100 līdz 200 MB
Ja meklējat failus noteiktā diapazonā, piemēram, no 100 līdz 200 MB
find / -size +100M -size -200M
Meklējiet direktorijus, kas lielāki par 20 kb
atrast / -tipa d -izmērs +20k
Atrodiet tukšus failus un direktorijus.
Faili
atrast ./ -tipa f -izmēru 0
vai
find ./ -type f –empty
Katalogi
find ./ -type d –empty
Atrodiet failus pēc vecuma vai modifikācijas laika
Atrodiet failus, kas vecāki par n dienām
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8 meklēs txt failus, kas ir vecāki par 8 dienām.
Pēc modifikācijas datuma
Tiks meklēti faili, kas mainīti pēdējo 17 stundu laikā
find . -mtime -17 -type f
Meklē direktorijus, kas mainīti pēdējo 10 dienu laikā
find . -mtime -10 -type d
Atrodiet failus, pamatojoties uz piekļuvi vai modifikācijām
Atrodiet failus, pamatojoties uz piekļuves datumu vai laiku. Tas ļauj skatīt failus, kuriem ir vai nav piekļūts noteiktā laika posmā.
Lai mājas direktorijā skatītu failus, kuriem pēdējo 10 dienu laikā nav piekļūts.
find /home -atime +10
Failiem piekļūts tieši pirms 10 dienām
find /home -atime 10
Piekļuve pēdējo 10 dienu laikā
find /home -atime -10
Atrodiet failus, kas mainīti pēdējo n dienu laikā
Varat arī meklēt pēdējo 10 dienu laikā mainītos failus /home direktorijā, izmantojot komandu;
find /home -mtime -10
Atrodiet failus, kas mainīti noteiktā laika posmā.
Piemēram, visi faili, kas mainīti pirms 6 līdz 15 dienām mājas direktorijā.
find /home -type f -mtime +6 -mtime -15
Faili un direktoriji, kuriem piekļūts pēdējo 10 minūšu laikā
Lai atrastu failus, kuriem piekļūts pēdējo 10 minūšu laikā, izmantojiet opciju -amin.
find . -amin -10 -type f
Izvade
./.bash_history ./[email protected]:~#
Katalogi, kuriem piekļūts pēdējo 10 minūšu laikā
find . -amin -10 -type d
Atrodiet failus, kas atbilst noteiktām atļaujām
Sintakse
$ find -perm mode
Kur režīms ir atļauja, kas ir vai nu ciparu, piemēram, 644, 655, 700, 777 utt., vai burti, piemēram, u=x, a=r+x utt.
Varat norādīt režīmu trīs dažādos veidos.
Atrodiet failus ar atļauju 777
find -perm 777
Izvade
./file1
Atrodiet failus ar vismaz 766
atrast -perm -766
Izvade
./file2 ./file1
Komanda meklē visus failus, kuros
- Faila īpašniekam ir lasīšanas/rakstīšanas/izpildīšanas atļaujas.
- Grupai ir lasīšanas/rakstīšanas atļaujas
- Citiem ir lasīšanas/rakstīšanas atļauja
Tādējādi tas atgriež divus failus, kas atbilst šim kritērijam – fails1 un fails2. Failiem nav jābūt precīzām 766 atļaujām, un tiem var būt papildu atļaujas, taču tām ir jābūt vismaz norādītajām.
Atrodiet failus, ko var ierakstīt īpašnieks
Tagad mēs izmantosim simbolu “/”, lai meklētu failus, ko var ierakstīt to īpašnieks, grupa vai citi.
find -perm /222 . ./file2 ./file3 ./file1
Iepriekš ir meklēti faili, kurus var rakstīt to īpašnieks vai grupa.
Tas atgriež failus, kurus var rakstīt, bet ne obligāti abi. Lai skatītu failus, kuriem abiem ir rakstīšanas atļaujas, izmantojiet prefiksu –.
find -perm -220
Izvade
./file2 ./file1
Atrodiet lietotājam piederošos failus
Atrodiet visus Džekam piederošos failus
find /home -user jack
Izvade
/home/jack /home/jack/examples.desktop /home/jack/.gnupg /home/jack/.gnupg/private-keys-v1.d /home/jack/ans.cgi
Atrodiet konkrētus failus, kas pieder lietotājam
Atrodiet visus Džekam piederošos teksta failus
find /home -user jack -iname "*.txt"
Izvade
/home/jack/docs/file32.txt
Atrodiet un uzskaitiet failus un direktorijus kopā ar to atļaujām
find -name "*.conf" | ls -l
Izvade
total 120 drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2 drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23 -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt
Atrodiet rezultātus un rīkojieties atbilstoši tiem
Šajā sadaļā mēs apskatīsim, kā varat rīkoties ar failiem, kas atbilst meklēšanas komandā norādītajam modelim.
Atrodiet failus un mainiet atļaujas
Atrodiet un mainiet noteiktu failu tipu atļaujas. Mūsu gadījumā mēs strādāsim ar PHP failiem ar dažādām atļaujām, kā parādīts zemāk.
[email protected]:~/ver$ ls -la total 8 drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 . drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 .. -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php
Tagad mēs meklēsim visus PHP failus (iepriekš) un aizstāsim to atļaujas ar 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
Komanda meklē PHP failus ver direktorijā un pēc tam iestata to atļauju uz 755 (rwxr-xr-x)
Rezultāti
[email protected]:~/ver$ ls -la total 8 drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 . drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 .. -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php
Atrodiet un mainiet failu un direktoriju atļaujas
Atrodiet failus ar 644 atļaujām un mainiet tos uz 655 atļaujām
find . -type f -perm 644 -exec chmod 655 {} ;
Varat arī meklēt direktorijus ar 644 atļaujām un aizstāt to ar 755.
find . -type d -perm 644
Izvade
./docs
Dokumentu mapei ir 644 atļaujas
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
Lai iestatītu to uz 755, mēs palaižam
find . -type d -perm 644 -exec chmod 755 {} ;
Tagad mēs varam vēlreiz pārbaudīt, kas tieši ir 755
find . -type d -perm 755
Izvade
.
./docs
No augšas mēs varam redzēt, ka saknes un dokumentu direktorijiem ir 755 atļaujas.
Komanda Ls –la sniedz šādu informāciju
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Atrodiet un kopējiet failus vai direktorijus
Atrodiet un kopējiet konkrētu failu direktorijā
Tālāk sniegtā komanda atradīs failu file22.txt un nokopēs to direktorijā ~/tmp/images.
find -iname file22.txt -exec cp {} ~/tmp/images ;
Atrodiet un kopējiet viena veida failus direktorijā
Lai pašreizējā direktorijā atrastu failus, piemēram, attēlus ar paplašinājumu jpg un kopētu tos uz citu vietu, piemēram, attēlu mapi, izmantojiet;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Tādējādi visi jpg faili tiks atrasti un kopēti mapē ~/tmp/images.
Atrodiet un kopējiet vienu failu daudzos direktorijos
Atrodiet un kopējiet vienu direktoriju vairākos direktorijos.
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Tas atradīs hci failu un kopēs to trīs direktorijās /tmp/dir1/ /tmp/dir2/ un $HOME/3/
Atrodiet un pārvietojiet failus uz citu direktoriju
Lai pārvietotu zināmu failu no direktorija uz citu. Lai pārvietotu universal.php failu;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Meklējiet un pārvietojiet failus ar noteiktu paplašinājumu uz citu mapi
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Atrodiet noteiktus failus un pārvietojiet uz noteiktu citu mapi
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
Komanda meklē visus failus, kuru nosaukumi sākas ar uni un kuriem ir jebkurš paplašinājums. Pēc tam tas pārvieto tos uz direktoriju /unifiles/
Atrodiet un pārvietojiet failus atkarībā no vecuma
Atrodiet un pārvietojiet failus, kas ir vecāki par norādītajām dienām, uz citu vietu, piemēram, arhīvu.
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
Tas meklēs PDF failus, kas ir vecāki par 20 dienām, un pārvietos tos uz dublējuma 1 direktoriju.
Atrodiet un dzēsiet failus un direktorijus
Sintakse failu vai direktoriju atrašanai un noņemšanai pašreizējā direktorijā ir
atrast. -type f -name „fails, kas jādzēš” -exec rm -f {}; lai dzēstu tikai failus vai
atrast. -type d -name „dir-to-delete” -exec rm -rf {}; lai dzēstu tikai direktorijus
Atrodiet un dzēsiet tikai noteiktus failus
Lai atrastu un dzēstu failus, kas sākas ar til, izmantojiet;
find . -type f -name "til*" -exec rm {} ;
Lai atrastu un dzēstu direktorijus, kas sākas ar til
find . -type d -name "til*" -exec rm {} ;
Noņemiet gan failus, gan direktorijus
find . -name "til*" -exec rm -rf {} ;
Tas noņems gan failus, gan direktorijus, kas sākas ar burtiem til.
Dzēst pēc paplašinājuma
Tālāk ir norādīts, kā jūs varat atrast un dzēst visus txt failus pašreizējā direktorijā. Aizstājiet txt ar citu paplašinājumu, piemēram, bak, pdf vai jebkuru citu paplašinājumu, kuru vēlaties noņemt.
find . -type f -name "*.txt" -exec rm -f {} ;
Ja vēlaties, lai sistēma pirms katra faila dzēšanas aicinātu jūs apstiprināt, pievienojiet opciju -i, kā norādīts tālāk.
find . -type f -name "*.txt" -exec rm -i {} ;
Izvade
rm: remove regular empty file './File22.txt'? y rm: remove regular empty file './file22.txt'? y rm: remove regular empty file './file23.txt'?
Pēc noklusējuma -rm nenoņems direktorijus, un jums ir jāizmanto opcija -r, lai nodrošinātu rekursīvu noņemšanu. Tas nodrošina tukšu direktoriju un to direktoriju dzēšanu, kuros ir faili. Opcija -f liek noņemt un tiek izmantota gan failiem, gan direktorijiem.
Atrodiet un izdzēsiet failus, kas vecāki par n dienām
Atrodiet un izdzēsiet pašreizējā direktorijā dublējuma failus, kas ir vecāki par 20 dienām.
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
Tādējādi tiks izdzēsti visi .bak faili, kas vecāki par 20 dienām.
Atrodiet un dzēsiet tikai direktorijus
Lai izdzēstu direktoriju ar nosaukumu dir22
find . -type d -name dir22 -exec rm -rf {} ;
Pārliecinieties, vai atbilstat direktorija nosaukuma reģistram vai izmantojiet opciju -iname.
find . -type d -iname Dir22 -exec rm -rf {} ;
Noņem gan Dir22, gan dir22
Lai apstiprinātu pirms dzēšanas, izmantojiet opciju -i.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Izvade
rm: noņemt direktoriju ‘./Dir22’? n
rm: vai noņemt direktoriju ‘./dir22’? y
Mūsu gadījumā mēs ierakstījām n direktorijam Dir22, kas netiks dzēsts, un y dir22, kas tagad tiks noņemts.
Atrodiet un noņemiet tukšus failus
Varat izmantot jebkuru no šīm komandām, lai atrastu tukšus failus un tos automātiski izdzēstu.
find ./ -type f -size 0 -exec rm -f {} ;
vai
atrast ./ -tipa f -izmērs 0 | xargs rm -f
vai
atrast ./ -tipa f -izmērs 0 -dzēst
Atrodiet un noņemiet tukšos direktorijus
Lai noņemtu tukšus direktorijus, mēs izmantosim opciju d.
find ./ -type d -empty -exec rmdir {} ;
Vēl viena alternatīva ir dzēšana, nevis noņemšana.
find ./ -type d -empty -delete
Lūdzu, ņemiet vērā, ka sistēmas vai kritisko failu dzēšana no datora var sabojāt operētājsistēmu vai lietojumprogrammas vai izraisīt svarīgu datu zudumu.
Lai izvairītos no nejaušas dzēšanas, vislabāk ir izmantot lietotāja kontu, kas nav saknes lietotājs. Tāpat pārliecinieties, vai dzēšat pareizos failus, kas nav noderīgi, un vai katram gadījumam ir visu datu failu dublējums.
Ko tālāk?
Turpiniet un izmēģiniet iepriekš minētās Linux atrašanas komandas savā laboratorijā vai NON PRODUCTION vidē. Skatiet, vai varat to izmantot, lai automatizētu failu sistēmas tīrīšanu, izmantojot Crontab. Un, lai apgūtu Linux, pārbaudiet šo tiešsaistes kurss.