.: Ad:.

25 września 2015

Skrypt do działań wewnątrz folderu…

Załóżmy, że mamy do zrobienia skrypt, który ze wskazanego folderu przenosi rekursywnie zawartość podfolderów do folderu bieżącego (odpalamy z terminala, więc zawsze jakiś tam folder jest bieżący) i dodatkowo kasuje puste foldery. Mile widziane by było gdyby to działało na pliki i foldery ukryte.
Powinna to załatwić następująca kombinacja:
find . -type f -exec mv --backup=numbered {} . \; &&
find . -maxdepth 1 -type d -exec rm -r {} +
Jak to działa?


find numer 1:

. <kropka> polecenie find przeszukuje przeszukuje bieżący folder;

-type f szuka tylko plików;

-exec […] dla każdego wyniku odpala polecenie (i wtedy dodajemyna końcu {} [...] \);

 mv --backup=numbered . \; przenosi każdy wynik szukania do bieżącego katalogu, tworząc numerowaną kopię pliku, gdy powtarzają się nazwy.

Idziemy do drugiej linii, find numer 2:

. <kropka> polecenie find przeszukuje przeszukuje bieżący folder;

-maxdepth 1 określa poziom zagłebienia w szukaniu, tutaj szuka tylko do pierwszego poziomu podfolderów;

-type d szuka tylko katalogów;

-exec […] dla wszystkich wyników odpala polecenie (i wtedy dodajemyna końcu {} +);

rm –r {} + kasuje każdy wynik.

Przykładowo, powinno to działać tak:
user@debian ~/tmp % tree -a
.
├── 1
│   ├── file1
│   ├── file2
│   ├── file3
│   └── .hidden
├── 2
│   ├── file1
│   ├── file2
│   ├── file3
│   └── .hidden
└── 3
    ├── file1
    ├── file2
    ├── file3
    └── .hidden

3 directories, 12 files
user@debian ~/tmp % find . -type f -exec mv --backup=numbered {} . \; && find . -type d -exec rm -r {} +
rm: refusing to remove "." or ".." directory: skipping "."
user@debian ~/tmp % tree -a
.
├── file1
├── file1.~1~
├── file1.~2~
├── file2
├── file2.~1~
├── file2.~2~
├── file3
├── file3.~1~
├── file3.~2~
├── .hidden
├── .hidden.~1~
└── .hidden.~2~

0 directories, 12 files

2 komentarze:

  1. W sumie takie oprogramowanie jest bardzo przydatne w codziennej pracy. Ja również zastanawiam się nad przejściem na Linuxa. Jak czytałam w https://ceo.com.pl/red-hat-w-firmie-35173 to faktycznie ta dystrybucja jest całkiem fajna.

    OdpowiedzUsuń
  2. Ja raczej takich rozwiązań na co dzień nie potrzebuję, ale jestem przekonana, że warto jest korzystać z dobrego oprogramowania. W takiej sytuacji każdemu mogę polecić oprogramowanie od https://www.connecto.pl/ które moim zdaniem sprawdza się znakomicie.

    OdpowiedzUsuń