Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:laboratoare:laborator-07:inspect-fs [2021/11/16 09:04]
liza_elena.babu [Căutarea unui fișier în sistem]
uso:laboratoare:laborator-07:inspect-fs [2021/11/22 16:46] (current)
andreia.ocanoaia [Selectarea multiplor fișiere folosind globbing]
Line 84: Line 84:
  
 <code bash> <code bash>
-student@uso:​~/​Pictures$ mv DCIM* excursie-Sinaia-2020/​+student@uso:​~/​.../​05-cli/​support/​support-globbing$ mv DCIM* excursie-Sinaia-2020/​
 </​code>​ </​code>​
 Observăm argumentul pe care l-am dat comenzii ''​%%mv%%'',​ și anume ''​%%DCIM*%%''​. Expresia ''​%%DCIM*%%''​ este un exemplu de globbing: adică o expresie care descrie un tipar prin folosirea unor caractere speciale, așa cum este caracterul ''​%%*%%''​. În cazul de față, expresia ''​%%DCIM*%%''​ înseamnă orice fișier al cărui nume începe cu șirul de caractere ''​%%DCIM%%''​. Observăm argumentul pe care l-am dat comenzii ''​%%mv%%'',​ și anume ''​%%DCIM*%%''​. Expresia ''​%%DCIM*%%''​ este un exemplu de globbing: adică o expresie care descrie un tipar prin folosirea unor caractere speciale, așa cum este caracterul ''​%%*%%''​. În cazul de față, expresia ''​%%DCIM*%%''​ înseamnă orice fișier al cărui nume începe cu șirul de caractere ''​%%DCIM%%''​.
Line 134: Line 134:
  
 <code bash> <code bash>
-student@uso:​~/​Pictures$ mv DCIM[0-9][0-9][0-9][0-9].jpg excursie-Sinaia-2020/​+student@uso:​~/​.../​05-cli/​support/​support-globbing$ mv DCIM[0-9][0-9][0-9][0-9].jpg excursie-Sinaia-2020/​
 </​code>​ </​code>​
 Cu expresia de mai sus vom muta toate pozele din intervalul **DCIM0000** - **DCIM9999**. Cu expresia de mai sus vom muta toate pozele din intervalul **DCIM0000** - **DCIM9999**.
Line 223: Line 223:
 </​note>​ </​note>​
  
-=== Scenarii complexe de căutare === 
- 
-Utilitarul ''​%%find%%''​ are o lungă listă de opțiuni pe care le putem folosi în expresii de căutare. Una din opțiunile mai cunoscute este ''​%%-type%%''​ care ne oferă posibilitatea de a căuta după tipul unui fișier: 
- 
-<code bash> 
-student@uso:​~$ find workspace/C -type f 
-workspace/​C/​leetcode/​src/​226.c 
-workspace/​C/​leetcode/​src/​700.c 
-workspace/​C/​leetcode/​src/​278.c 
-[...] 
-</​code>​ 
-În exemplul de mai sus i-am transmis utilitarului ''​%%find%%''​ că vrem să căutăm în directorul ''​%%~/​workspace/​C%%''​ toate fișierele text (regular file) ''​%%-type f%%''​. 
- 
-**Exercițiu:​** Accesați pagina de manual a utilitarului find (''​%%man find%%''​) și căutați opțiunea ''​%%-type%%''​. Căutați în directorul ''​%%workspace/​C%%''​ după fiecare tip de fișier pentru care oferă suport opțiunea ''​%%-type%%''​. 
- 
-<​note>​ 
- 
- 
-Reminder: pentru a căuta în man folosim ''​%%/​%%''​ pentru a intra în search mode și apoi introducem textul pe care îl căutam ''​%%-type%%''​ urmat de tasta ''​%%Enter%%'';​ pentru a ne duce la următorul rezultat al căutării folosim tasta ''​%%n%%''​ (next). 
-</​note>​ 
- 
-În cadrul unei căutări putem să combinăm opțiunile de căutare: 
- 
-<code bash> 
-student@uso:​~$ find workspace/C -type f -name "​*search*"​ 
-workspace/​C/​searching/​modified_binary_search.c 
-workspace/​C/​searching/​ternary_search.c 
-workspace/​C/​searching/​jump_search.c 
-workspace/​C/​searching/​binary_search.c 
-</​code>​ 
-În exemplul de mai sus căutăm toate fișierele text care conțin șirul **search** în nume. 
- 
-Utilitarul ''​%%find%%''​ ne permite să executăm comenzi asupra rezultatelor căutării. Facem acest cu opțiunea ''​%%-exec command {} ;​%%''​. Atunci când folosim ''​%%-exec%%'',​ rezultatul căutării va înlocui șirul **'​{}'​** în textul comenzii; comanda de executat trebuie să se termine în caracterul ''​%%;​%%''​. 
- 
-Observăm exemplul de mai jos: 
- 
-<code bash> 
-student@uso:​~$ find workspace/C -type f -name "​*search*"​ -exec ls -l {} \; 
--rw-r--r-- 1 student student 3312 sep 17 19:20 workspace/​C/​searching/​modified_binary_search.c 
--rw-r--r-- 1 student student 1782 sep 17 19:20 workspace/​C/​searching/​ternary_search.c 
--rw-r--r-- 1 student student 1624 sep 17 19:20 workspace/​C/​searching/​jump_search.c 
--rw-r--r-- 1 student student 2799 sep 17 19:20 workspace/​C/​searching/​binary_search.c 
--rw-r--r-- 1 student student 867 sep 17 19:20 workspace/​C/​searching/​other_binary_search.c 
-</​code>​ 
-În exemplul de mai sus, argumentul opțiunii ''​%%exec%%''​ este ''​%%ls -l {} \;​%%''​. În cuvinte, pentru fiecare fișier text care conține șirul **search** vom afișa informații în format lung (''​%%ls -l {}%%''​). Observăm că ''​%%-exec%%''​ se încheie cu ''​%%\;​%%'':​ este nevoie să escapăm caracterul ''​%%;​%%''​ pentru ca acesta să fie interpretat de către utilitarul ''​%%find%%''​ și nu de către terminalul în care rulăm, exact ca în cazul ''​%%-name PATTERN%%''​. 
- 
-În secțiunile ce urmează vom vedea cum ne folosim de opțiunea ''​%%exec%%''​ pentru a face recursiv search & replace în fișiere. 
  
 === Exerciții === === Exerciții ===
  
-  - Folosind ''​%%find%%''​ căutați fișierele care conțin șirul ''​%%bubble_sort%%''​ în nume. +  - Folosind ''​%%find%%''​ căutați fișierele care conțin șirul ''​%%tmp%%''​ în nume. Hint: [starting point] este ''​%%/%%''​. 
-  - Folosind ​''​%%find%%'' ​căutați fișierele care conțin șirul ''​%%quick_sort%%''​ în nume+  - Folosind ''​%%find%%''​ căutați fișierele care conțin șirul ''​%%bin%%''​ în nume. Hint: [starting point] este ''​%%/%%''​.
-  - Folosind ''​%%find%%''​ căutați fișierele care conțin șirul ''​%%merge_sort%%''​ în nume. +
-  - Folosind ​''​%%find%%'' ​căutați fișierele care conțin șirul ''​%%sort%%''​ în nume.+
  
 **Note de subsol** **Note de subsol**
  
uso/laboratoare/laborator-07/inspect-fs.1637046281.txt.gz · Last modified: 2021/11/16 09:04 by liza_elena.babu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0