Portál AbcLinuxu, 5. května 2025 16:19
#!/bin/bash ZDROJ=`pwd` CIEL='/home/dvh/pokus' mkdir $CIEL for i in *.txt; do echo "Kopirujem $i" cp "$ZDROJ/$i" "$CIEL/`echo $i | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`" done(aneb: Ked jediny nastroj co mas je kladivo, vsetko vyzera ako kliniec :) premennu CIEL si premenuj na to kam sa to ma kopirovat
#!/bin/bash ZDROJ=`pwd` CIEL='/home/dvh/pokus' mkdir $CIEL for i in *.txt; do echo "Kopirujem $i" cp "$ZDROJ/$i" "$CIEL/`echo $i | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' | sed 's/.txt$//'`" done
#!/bin/bash # Inicializace promennych AWK=/usr/bin/gawk i=0 fail() { echo "SELHANI: ${*}" exit 1 } get_dst() { SRC_NAME="${1}" DST_DIR="${2}" echo $* | $AWK -v src_name="${SRC_NAME}" -v dst_dir="${DST_DIR}" ' BEGIN { dst_name=src_name sub(/\.txt$/,"",dst_name) sub(/.*\//,"",dst_name) print(dst_dir "/" tolower(dst_name)) }' } # Zakladni kontrola smysluplnych parametru [ "${#}" -lt "2" ] && fail "Prilis malo parametru." [ -d "${!#}" ] || fail "\"${!#}\" neni adresarem." while [ "${i}" -lt "$((${#} - 1))" ] ; do ((i++)) if [ ! -f "${!i}" ] ; then echo "VAROVANI: \"${!i}\" neni souborem - vynechavam." continue fi cp -i "${!i}" "`get_dst "${!i}" "${!#}"`" doneJde to vylepšit (zjednodušit, přidat kontroly... mazanou koncovku ovládat z příkazové řádky... přepsat), ale jinak komentáře: a) I takový malý nástroj může být príma, když ho jde krmit parametry z příkazové řádky. b) trocha purismu... omezme roury (a forky). I ten sed, šel zavolat najednou:
sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;s/\.txt$//'c) (ne že by byl dobrý nápad je používat, ale) ten
sed
by si vylámal zuby na jménech souborů s diakritikou. Nehledě na to, že v tomto případě získává sed
nízké hodnocení za estetický dojem. Tohle by navíc snad mělo běhat celkem na čemkoliv, kde je k dispozici bash
a gawk
nebo nawk
(po malé úpravě). ;)
for i in *.txt; do cp $i adresar/`echo ${i%.txt} | tr '[:upper:]' '[:lower:]'`; done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.