Puncte:-2

eliminați anumite fișiere, cu excepția altora

drapel in

Am găsit atât de multe sugestii cu privire la modul de eliminare a fișierelor cu excepții. Cu toate acestea, acest caz este puțin diferit. Să spunem că am 6 fișiere, după cum urmează Ubuntu 18.04:

text_1.json
text_2.json
video_1.mp4
video_2.mp4
video_1_notouch.mp4
video_2_notouch.mp4

Comanda ar trebui să fie eliminată numai video_1.mp4 și video_2.mp4 fișierele lăsând alte fișiere așa cum sunt.

am incercat rm -v !(*.json|*_notouch.mp4) așa cum se sugerează Aici, dar a eliminat toate cele 6 fișiere.

Someone avatar
drapel my
Vă rugăm să [editați] întrebarea dvs. pentru a include 0. Versiunea dvs. Ubuntu , 1. Care este problema dvs. 2. Acum ce doriți după ce eliminați acele fișiere
Someone avatar
drapel my
Ce vrei sa spui prin a scos totul?
guiverc avatar
drapel cn
[Ubuntu 16.04 LTS a ajuns la sfârșitul duratei de viață de suport *standard*](https://fridge.ubuntu.com/2021/03/13/extended-security-maintenance-for-ubuntu-16-04-xenial-xerus -begins-april-30-2021/) este acum în afara subiectului aici, cu excepția cazului în care întrebarea dvs. este specifică pentru a vă ajuta să treceți la o versiune acceptată a Ubuntu. Suportul Ubuntu 16.04 ESM este disponibil, dar nu la subiect aici, consultați https://askubuntu.com/help/on-topic Vedeți și https://ubuntu.com/blog/ubuntu-16-04-lts-transitions- la-securitate-extinsă-întreţinere-esm
bit_scientist avatar
drapel in
hopa, este 18.04, nu 16.04, scuze pentru greșeală
bac0n avatar
drapel cn
ce spune `shopt extglob`?
bit_scientist avatar
drapel in
@bac0n Era când am folosit comanda, acum este oprită
bac0n avatar
drapel cn
Cred că shopt extglob este setat de bash-completion, dar îl puteți adăuga și la `~/.bashrc`, totuși nu este moștenit, așa că va trebui să-l resetați când intenționați să invocați un nou shell, de ex., `bash -c 'shopt extglob'` poate fi scris *bash -O extglob -c 'shopt extglob'*
user535733 avatar
drapel cn
`rm` este permanent și nu poate fi anulat. Dacă aveți riscuri, deoarece fișierele de păstrat și fișierele de șters sunt amestecate împreună, atunci implementați controale de bază de gestionare a riscurilor: Separați pașii (utilizați `find`) sau separați fișierele în tempdirs. Sau fă-ți timp pentru a merge fișier cu fișier. Citiți cu atenție rezultatul și testați-vă rezultatele înainte de a șterge. Vă va scuti de multe lacrimi.
Puncte:7
drapel cn

Este mai bine și mai ușor de utilizat găsi comanda:

găsi . -type f -nume „*.mp4” ! -nume „*_notouch.mp4” -exec rm -v {} \;

Această comandă se va potrivi cu orice nume de fișier care se termină cu .mp4, dar nu cu _notouch.mp4 și va rula comanda dată după -exec.

Înainte de astfel de operațiuni distructive, este întotdeauna înțelept să se adauge sau să se înlocuiască rm comanda cu o ecou și verificați că primiți comenzile pe care le așteptați:

găsi . -type f -nume „*.mp4” ! -name „*_notouch.mp4” -exec echo rm -v {} \;

[Editați | ×] După cum se menționează în comentarii; în cazul tău, poți doar să folosești -printare -stergere in locul -exec echo rm -v {} \; (ceea ce va fi mai eficient dacă aveți milioane de fișiere). Și pentru a enumera fișierele care vor fi afectate (înainte de a rula comanda distructivă), puteți doar să rulați:

găsi . -type f -nume „*.mp4” ! -nume „*_notouch.mp4” (-imprimare este optional)

De asemenea, dacă tu nu face doriți să afectați subdirectoarele, puteți utiliza -adancime maxima 1 varianta ca aceasta:

găsi . -maxdepth 1 -type f -name "*.mp4" ! -nume „*_notouch.mp4”.

bac0n avatar
drapel cn
mai bine folosiți `+` în loc de ```\;```
bac0n avatar
drapel cn
sau `find -type f -name '...' ... -print -delete`
Liso avatar
drapel sd
+1 Truc frumos!
user535733 avatar
drapel cn
+1 pentru că v-ați acordat timp pentru a explica un mod SIGUR de a face acest lucru.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.