Some bash examples

Название файла без пути:
$(basename $file)
Меняем расширение у всех файлов в директории:
for f in *.arc; do mv “$f” “`basename “$f” .arc`.dbf”; done;

Название файла без расширения:
Use ${x%.*} to remove everything after a dot or ${x%%.*} to remove everything after the first dot.
Example: $ x=”/foo/fizzbuzz.bar.quux”
$ y=${x%.*}
$ echo $y
/foo/fizzbuzz.bar
$ y=${x%%.*}
$ echo $y
/foo/fizzbuzz

Цикл с функцией (regexp, например):

… |while read OUT; do echo ${OUT%.*}; done| …

Более конкретный пример, удаляем расширение gz из имени всех файлов в директории:
ls *.gz | while read OUT; do echo ${OUT%.*}; done | xargs mv {}.gz {}
ls *.gz | while read OUT; do echo ${OUT%.*}; done | /usr/local/bin/parallel -P 1 mv {}.gz {}

Удаляем из пути префикс с корневой директорией:
sed -e “s:\($ROOT_PREFIX\)\(.*\):echo \2 :”

Например, копируем файлы из одной директории в другую:
find /u01/dir/ -name “*.zip” | sed -e “s:\(/u01/dir\)\(.*\):/bin/scp /u01/dir/\2 user_name\@target_host\:/u02/dir/\2 :” | /usr/local/bin/parallel -P 10 /bin/bash -c  “{}”

хорошая статья про использование find для разных операций:
http://www.ibm.com/developerworks/aix/library/au-unix-find.html

Вывести диапазон строк из файла:
sed -n ‘1850,1883p’ 20130329180000.xml