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.
Tartalomjegyzék
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"
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 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 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.
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.