Az átnevezési parancs használata Linuxon

Ismerkedjen meg a Linux-világ fájlátnevezési erőművével, és hagyja pihenni az mv-t – és magát is. Az átnevezés rugalmas, gyors és néha még egyszerűbb is. Íme egy oktatóanyag a parancs erőművéhez.

Mi a baj az mv-vel?

Nincs semmi baj az mv-vel. A parancs igen szép munka, és megtalálható minden Linux-disztribúción, macOS-ben és más Unix-szerű operációs rendszerekben. Tehát mindig elérhető. De néha csak egy buldózer kell, nem egy lapát.

Az mv parancsnak életcélja van, ez pedig a fájlok áthelyezése. Örömteli mellékhatás, hogy egy meglévő fájlt át lehet helyezni egy új fájlba, új néven. A nettó hatás a fájl átnevezése, így azt kapjuk, amit akarunk. De az mv nem egy dedikált fájl átnevezési eszköz.

Egyetlen fájl átnevezése mv-vel

Az mv használatával mv fájltípus átnevezéséhez írjon szóközt, a fájl nevét, egy szóközt és a fájl új nevét. Ezután nyomja meg az Enter billentyűt.

Az ls segítségével ellenőrizheti, hogy a fájl át lett-e nevezve.

mv oldfile.txt newfile.txt
ls *.txt

Több fájl átnevezése mv-vel

A dolgok bonyolultabbá válnak, ha több fájlt szeretne átnevezni. Az mv nem képes több fájl átnevezésére. Használnia kell néhány remek Bash-trükköt. Ez rendben van, ha ismeri a közepes szintű parancssori fu-t, de a több fájl mv-vel történő átnevezésének bonyolultsága éles ellentétben áll azzal, hogy egyszerű mv-vel lehet átnevezni egyetlen fájlt.

A dolgok gyorsan eszkalálódnak.

Tegyük fel, hogy van egy könyvtárunk, amelyben számos különböző típusú fájl található. Ezen fájlok némelyike ​​„.prog” kiterjesztéssel rendelkezik. Át akarjuk nevezni őket a parancssorban, hogy „.prg” kiterjesztéssel rendelkezzenek.

Hogyan vessük rá az mv-t, hogy ezt megtegye helyettünk? Vessünk egy pillantást a fájlokra.

ls *.prog -l

Íme az egyik módja annak, hogy nem kell tényleges Bash-szkriptfájlt írni.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

f esetén *.prog;  csinálj mv-t --

ez sikerült? Nézzük meg a fájlokat és nézzük meg.

ls *.pr*

Szóval igen, sikerült. Ezek most mind „.prg” fájlok, és nincsenek „.prog” fájlok a könyvtárban.

  Miért szerettem a Microsoft Bobot, a Microsoft legfurcsább alkotását

Mi történt?

Mit csinált valójában ez a hosszú parancs? Bontsuk szét.

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

Az első rész elindít egy ciklust, amely felváltva feldolgozza a könyvtárban található „.prog” fájlokat.

A következő rész azt mondja, hogy mit fog végezni a feldolgozás. Az mv segítségével minden fájlt új fájlba helyez át. Az új fájl elnevezése az eredeti fájl neve lesz, a „.prog” rész kivételével. Ehelyett a „.prg” új kiterjesztése kerül felhasználásra.

Kell lennie egy egyszerűbb útnak

Leghatározottabban. Ez az átnevezés parancs.

A rename nem része egy szabványos Linux disztribúciónak, ezért telepítenie kell. Különböző Linux-családokban is más a neve, de mindegyik ugyanúgy működik. Csak be kell cserélnie a megfelelő parancsnevet a használt Linux-típusnak megfelelően.

az Ubuntu és Debian eredetű disztribúciókban a következőképpen telepíti az átnevezést:

sudo apt-get install rename

A Fedora és RedHat eredetű disztribúciókban az előnevet ilyen módon kell telepíteni. Jegyezze meg a kezdeti „p”-t, amely a Perl-t jelenti.

sudo dnf install prename

A Manjaro Linux rendszerben történő telepítéséhez használja a következő parancsot. Vegye figyelembe, hogy az átnevezési parancs neve perl-rename.

sudo pacman -Syu perl-rename

Csináljuk meg újra

És ezúttal az átnevezést fogjuk használni. Visszatekerjük az órát, hogy legyen egy sor „.prog” fájlunk.

ls *.prog

Most a következő paranccsal nevezzük át őket. Ezután ellenőrizzük az ls-szel, hogy működött-e. Ha nem Ubuntut vagy Debian-eredetű Linuxot használ, ne felejtse el az átnevezést a Linux megfelelő parancsnevével helyettesíteni.

rename 's/.prog/.prg/' *.prog
ls *.pr*

Ez működött, most már mind „.prg” fájl, és nem maradt „.prog” fájl a könyvtárban.

Mi Történt Ezúttal?

Magyarázzuk el ezt a varázslatot három részben.

Az első rész a parancs neve, rename (vagy prename vagy perl-rename , a többi disztribúció esetében).

Az utolsó rész a *.prog, amely megmondja, hogy az átnevezés minden „.prog” fájlon működjön.

A középső rész határozza meg, hogy az egyes fájlnevekkel milyen munkát szeretnénk végezni. Az s helyettesítőt jelent. A rename az első kifejezést (.prog) fogja keresni az egyes fájlnevekben, a második kifejezést (.prg) pedig behelyettesíti.

A parancs középső része vagy központi kifejezés egy Perl ‘reguláris kifejezés‘ és ez adja az átnevezés parancs rugalmasságát.

A fájlnév egyéb részeinek módosítása

A fájlnévkiterjesztéseket eddig változtattuk, a fájlnevek egyéb részeit módosítjuk.

A könyvtárban sok C forráskód fájl található. Minden fájlnév előtagja a „szleng_”. Ezt ellenőrizhetjük az ls-el.

ls sl*.c

A „szleng_” minden előfordulását „sl_”-re cseréljük. A parancs formátuma már ismerős számunkra. Éppen a keresési kifejezést, a helyettesítő kifejezést és a fájltípust változtatjuk meg.

rename 's/slang_/sl_' *.c

Ezúttal a „.c” fájlokat keressük, és a „slang_” kifejezést. Ha egy fájlnévben „slang_” található, azt „sl_”-vel helyettesítjük.

  A JetBrains GoLand telepítése Linuxra

A parancs eredményét ellenőrizhetjük az ls parancs felülről történő megismétlésével ugyanazokkal a paraméterekkel:

ls sl*.c

Fájlnév egy részének törlése

Eltávolíthatjuk a fájlnév egy részét, ha a keresett kifejezést semmivel nem helyettesítjük.

ls *.c
rename 's/sl_//' *.c
ls *.c

Az ls parancsból láthatjuk, hogy a „.c” fájlunk elé az „sl_” karakterlánc tartozik. Szabaduljunk meg ettől teljesen.

Az átnevezés parancs ugyanazt a formátumot követi, mint korábban. „.c” fájlokat fogunk keresni. A keresett kifejezés „sl_”, de nincs helyettesítő kifejezés. Két fordított perjel, ha nincs közöttük semmi, nem jelent semmit, üres karakterlánc.

A rename sorra feldolgozza az egyes „.c” fájlokat. Megkeresi az „sl_” kifejezést a fájlnévben. Ha megtalálják, a helyére nem kerül semmi. Más szóval, a keresett kifejezés törlődik.

Az ls parancs második használata megerősíti, hogy az „sl_” előtagot minden „.c” fájlból eltávolították.

Korlátozza a változtatásokat a fájlnevek bizonyos részeire

Az ls segítségével nézzük meg azokat a fájlokat, amelyek fájlnevében a „param” karakterlánc szerepel. Ezután az átnevezést használjuk, hogy a karakterláncot a „paraméter” karakterláncra cseréljük. Még egyszer használjuk az ls-t, hogy megnézzük, milyen hatást gyakorolt ​​az átnevezés parancs ezekre a fájlokra.

ls *param*
rename 's/param/parameter' *.c
ls *param*

Négy olyan fájl található, amelyek fájlnevében a „param” szerepel. A param.c, param_one.c és param_two.c nevük elején a „param” szerepel. A harmadik_param.c neve végén a „param” szerepel, közvetlenül a kiterjesztés előtt.

A rename parancs a fájlnévben mindenhol megkeresi a „param” szót, és minden esetben „parameter”-re cseréli.

Az ls parancs második használata megmutatja, hogy pontosan ez történt. Függetlenül attól, hogy a „param” a fájlnév elején vagy végén szerepelt, a „paraméter” kifejezésre került.

A Perl metakaraktereit használhatjuk a középső kifejezés viselkedésének finomításához. A metakarakterek olyan szimbólumok, amelyek karakterek pozícióit vagy sorozatait jelölik. Például a ^ jelentése „egy karakterlánc kezdete”, a $ jelentése „karakterlánc vége” és . bármely egyedi karaktert jelent (az újsor karaktertől eltekintve).

A karakterlánc metakarakter ( ^ ) elejét fogjuk használni, hogy a keresést a fájlnevek elejére korlátozzuk.

ls *param*.c
rename 's/^parameter/value/' *.c
ls *param*.c
ls value*.c

A korábban átnevezett fájlok felsorolva vannak, és láthatjuk, hogy a „paraméter” karakterlánc három fájlnév elején, és az egyik fájlnév végén található.

Az átnevezési parancsunk a sor kezdetét (^) használja a „paraméter” keresőkifejezés előtt. Ez azt mondja, hogy az átnevezés csak akkor tekintse megtaláltnak a keresett kifejezést, ha az a fájlnév elején található. A „paraméter” keresési karakterlánc figyelmen kívül marad, ha bárhol máshol szerepel a fájlnévben.

  A helyesírási és nyelvtani ellenőrzés kikapcsolása a OneNote-ban

Az ls-el ellenőrizve láthatjuk, hogy az a fájlnév, amelynek a fájlnév végén „parameter” volt, nem módosult, de a három fájlnévben, amelyek neve elején „parameter” szerepelt, a keresési karakterláncot helyettesítő karakterlánc helyettesítette. „érték” kifejezés.

Az átnevezés ereje a Perlben rejlik. Minden Perl ereje az Ön rendelkezésére áll.

Keresés csoportosítással

A rename még több trükköt rejt magában. Tekintsük azt az esetet, amikor hasonló karakterláncokat tartalmazó fájlok lehetnek a nevükben. Nem pontosan ugyanazok a karakterláncok, így az egyszerű keresés és helyettesítés itt nem működik.

Ebben a példában az ls-t használjuk annak ellenőrzésére, hogy mely fájljaink vannak, amelyek „str”-vel kezdődnek. Ebből kettő van, a string.c és a strangle.c. Mindkét karakterláncot átnevezhetjük egyszerre a csoportosításnak nevezett technikával.

Ennek az átnevezési parancsnak a központi kifejezése a „stri” vagy „stra” karaktersorozattal rendelkező fájlneveken belüli karakterláncokat keresi, ahol ezeket a sorozatokat közvetlenül az „ng” követi. Más szavakkal, a keresési kifejezésünk a „string” és a „strang” kifejezésekre fog keresni. A helyettesítő kifejezés „bumm”.

ls str*.c
rename 's/(stri|stra)ng/bang/' *.c
ls ban*.c

Az ls másodszori használata megerősíti, hogy a string.c a bang.c lett, a strangle.c pedig a bangle.c.

Fordítások használata átnevezéssel

Az átnevezés parancs műveleteket hajthat végre a fordításoknak nevezett fájlneveken. Egy egyszerű példa a fordításra az lenne, ha egy fájlnevet nagybetűre kényszerítenénk.

Az alábbi átnevezés parancsban figyeljük meg, hogy nem s/-t használunk a központi kifejezés elindításához, hanem az y/-t. Ez azt jelzi, hogy az átnevezést nem hajtjuk végre; fordítást végzünk.

Az az kifejezés egy Perl kifejezés, amely az a-tól z-ig terjedő sorozat összes kisbetűjét jelenti. Hasonlóképpen, az AZ kifejezés az összes nagybetűt jelöli az A-tól Z-ig tartó sorozatban.

Ennek a parancsnak a központi kifejezése átfogalmazható így: „ha a fájlnévben a-tól z-ig tartó kisbetűk bármelyike ​​megtalálható, cserélje ki azokat a megfelelő karakterekkel az A-tól Z-ig terjedő nagybetűs karaktersorozatból”.

Az összes „.prg” fájl fájlnevének nagybetűre kényszerítéséhez használja ezt a parancsot:

nevezd át az ‘y/az/AZ/’ *.prg-t

ls *.PRG

Az ls parancs megmutatja, hogy az összes „.prg” fájlnév nagybetűs. Valójában, hogy pontosak legyünk, ezek már nem „.prg” fájlok. Ezek „.PRG” fájlok. A Linux megkülönbözteti a kis- és nagybetűket.

Az utolsó parancsot megfordíthatjuk, ha megfordítjuk az az és az AZ kifejezések pozícióját a központi kifejezésben.

nevezd át az ‘y/AZ/az/’ *.PRG-t

ls *.prg

Nem tanulod meg a Perlt öt perc alatt

A Perllel való megbirkózás jól eltöltött idő. De ahhoz, hogy elkezdje használni az átnevezés parancs időtakarékos képességeit, egyáltalán nem kell sok Perl-ismerettel rendelkeznie ahhoz, hogy jelentős előnyöket élvezzen az erő, az egyszerűség és az idő terén.