Benutzer-Werkzeuge

Webseiten-Werkzeuge


becki:sources:file_utilities

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
becki:sources:file_utilities [2008-09-16 13:22]
becki
becki:sources:file_utilities [2009-04-24 09:57] (aktuell)
becki
Zeile 1: Zeile 1:
 ====== File Utilities == ====== File Utilities ==
  
-Hopefully useful scripts to convert file names, handle access rights, convert between charsets and indent size handling+Hopefully useful scripts to convert file names, handle access rights, convert between charsets and indent size handling
 + 
 +Download latest version [[http://​think-deep.com/​becki/​sources/​pack.php?​n=fileutils|here]]
  
 ===== Filename Manipulation == ===== Filename Manipulation ==
Zeile 7: Zeile 9:
  
 ''​sbsp2un'':​ Convert all spaces in passed filenames to underscores. Not recursive. ''​sbsp2un'':​ Convert all spaces in passed filenames to underscores. Not recursive.
- 
-<code bash> 
-#!/bin/bash 
-# File:    sbsp2un 
-# Version: 2008-09-16 
-# Author: ​ Stefan Beckert ​ http://​wiki.think-deep.com/​becki:​start 
-# License: Public Domain 
-#          No warranty expressed or implied. Use at your own risk. 
-# Todo:    Make script recursive with -R flag 
-# Description:​ 
-#   see usage 
- 
-scna=$(basename $0) 
- 
-usage="​Usage:​\n\ 
-  $scna file1 [file2 ...] - to convert spaces in filenames to underscores"​ 
- 
-# Test number of command line arguments: 
-if [ $# -lt 1 ]; then 
-    echo "​Error:​ Argument is missing!"​ 
-    echo -e $usage 
-    exit 1 
-fi 
- 
-# do the work: 
-for arg in "​$@";​ do  # $@ sees arguments as separate words. 
-    mv "​$arg"​ "​$(echo "​$arg"​ | tr ' ' '​_'​)";​ #rename would also be possible 
-done 
-</​code>​ 
  
 ==== Make Filenames lowercase == ==== Make Filenames lowercase ==
  
-''​sblowerc'':​ Make filenames and directory names lowercase recursively in whole directory trees+''​sblowerc'':​ Make filenames and directory names lowercase recursively in whole directory trees.
- +
-<code bash> +
-#​!/​bin/​bash +
-# File:    sblowerc +
-# Version: 2008-09-16 +
-# Author: ​ Stefan Beckert ​ http://wiki.think-deep.com/​becki:​start +
-# License: Public Domain +
-#          No warranty expressed or implied. Use at your own risk. +
-# Todo:    Recursion only on demand with -R flag +
-# Description:​ +
-#   see usage +
- +
-scna=$(basename $0) +
- +
-usage="​Usage:​\n\ +
-  $scna file1 [file2 ...] - to recursively make the filenames lowercase"​ +
- +
-# Test number of command line arguments:​ +
-if [ $# -lt 1 ]; then +
-    echo "​Error:​ Argument is missing!"​ +
-    echo -e $usage +
-    exit 1 +
-fi +
- +
-# do the work: +
-for arg in "​$@";​ do  # $@ sees arguments as separate words. +
- +
-    # If file exists and is a directory:​ +
-    if [ -d $arg ]; then +
-        pushd $arg > /dev/null +
-        if [ $? -eq 0 ]; then +
-            #echo "​recursing in" * +
-            $0 * # this starts recursion +
-            #echo "​recursing ready" * +
-            popd > /dev/null +
-        #else +
-            #echo "​Error:​ Couldn'​t pushd $arg"​ +
-        fi +
-    fi +
- +
-    buf=$(echo $arg | tr '​[:​upper:​]'​ '​[:​lower:​]'​) +
-    #buf=$(echo $arg | tr '​[:​lower:​]'​ '​[:​upper:​]'​) +
-    if [ "​$arg"​ != "​$buf"​ ]; then +
-        mv "​$arg"​ "​$buf"​ +
-    fi +
-done +
-</​code>​+
  
 ===== Change Access Permissions == ===== Change Access Permissions ==
 ==== Permissions for Files and Dirs == ==== Permissions for Files and Dirs ==
  
-''​sbchmod'':​ Change access permissions recursively and separately for files and directories+''​sbchmod'':​ Change access permissions recursively and separately for files and directories.
- +
-<code bash> +
-#​!/​bin/​bash +
-# File:    sbchmod +
-# Version: 2008-09-16 +
-# Author: ​ Stefan Beckert ​ http://wiki.think-deep.com/​becki:​start +
-# License: Public Domain +
-#          No warranty expressed or implied. Use at your own risk. +
-# Description:​ +
-#   see usage +
- +
-scna=$(basename $0) +
- +
-usage="​Usage:​\n\ +
-  $scna dirmod filemod file1 [file2 ...] - change access permissions recursively and separately for files and directories"​ +
- +
-# Test number of command line arguments:​ +
-if [ $# -lt 3 ]; then +
-    echo "​Error:​ Too few arguments!"​ +
-    echo -e $usage +
-    exit 1 +
-fi +
-dirmod=$1 +
-filemod=$2 +
- +
-# do the work: +
-for arg in "​$@";​ do  # $@ sees arguments as separate words. +
- +
-    # If file exists and is a directory:​ +
-    if [ -d $arg ]; then +
-        chmod $dirmod $arg +
-        pushd $arg > /dev/null +
-        if [ $? -eq 0 ]; then +
-            $0 $dirmod $filemod * # this starts recursion +
-            popd > /dev/null +
-        fi +
- +
-     # If file exists and is a regular file: +
-    elif [ -f $arg ]; then +
-        chmod $filemod $arg +
-    fi +
-done +
-</​code>​+
  
 ===== Character Set Conversion == ===== Character Set Conversion ==
Zeile 140: Zeile 23:
  
 ''​sblatin2utf'':​ Convert text files from Latin1 (ISO-8859-1) to UTF-8 and vice versa: ''​sblatin2utf'':​ Convert text files from Latin1 (ISO-8859-1) to UTF-8 and vice versa:
- 
-<code bash> 
-#!/bin/bash 
-# File:    sblatin2utf 
-# Version: 2008-09-16 
-# Author: ​ Stefan Beckert ​ http://​wiki.think-deep.com/​becki:​start 
-# License: Public Domain 
-#          No warranty expressed or implied. Use at your own risk. 
-# Description:​ 
-#   see usage 
-# Todo: 
-#   Test script with filenames containing spaces! 
-# Installation:​ 
-#   Save this script to /​usr/​local/​bin/​sblatin2utf 
-#   Crate a symlink: /​usr/​local/​bin/​sbutf2latin -> sblatin2utf 
- 
- 
-lati='​ISO-8859-1'​ 
-utf8='​UTF-8'​ 
-l2uf='​sblatin2utf'​ 
-u2lf='​sbutf2latin'​ 
-scna=$(basename $0) 
-tmpf=/​tmp/​$scna.$$ 
- 
-usage="​$scna Usage:\n\ 
-  $l2uf file1 [file2 ...] - to convert files from $lati to $utf8\n\ 
-  $u2lf file1 [file2 ...] - to convert files from $utf8 to $lati" 
- 
- 
-printError() { 
-    echo "$scna Error: $1" >&2 
-} 
- 
-printErrorAndExit() { 
-    printError "​$1"​ 
-    echo -e $usage >&2 
-    exit $2 
-} 
- 
- 
-# Get direction of conversion: 
-case "​$scna"​ in 
-    $l2uf ) fenc=$lati; tenc=$utf8;;​ 
-    $u2lf ) fenc=$utf8; tenc=$lati;;​ 
-    *     ) 
-        printErrorAndExit "​Rename this script to $l2uf or $u2lf!"​ 2 
-    ;; 
-esac 
- 
-# Test number of command line arguments: 
-if [ $# -lt 1 ]; then 
-    printErrorAndExit "​Argument is missing!"​ 1 
-fi 
- 
-# do the work: 
-for arg in "​$@";​ do  # $@ sees arguments as separate words. 
-    if [ -w $arg ]; then 
-        iconv -f $fenc -t $tenc $arg > $tmpf 
-        if [ $? -eq 0 ]; then 
-            cat  $tmpf > $arg # no mv, because mv resets the file permissions 
-            #mv $tmpf $arg 
-        else 
-            printError "iconv failed to convert $arg" 
-        fi 
-    else 
-        printError "$arg is not a file or is write protected"​ 
-    fi 
-done 
- 
-if [ -e $tmpf ]; then 
-    rm $tmpf 
-fi 
-</​code>​ 
  
 ===== Spaces, Tabs and Indent == ===== Spaces, Tabs and Indent ==
Zeile 218: Zeile 28:
  
 ''​sbexpand'':​ Convert tabs to spaces and vice versa. Works like expand and unexpand commands, but opeates directly on the file instead of writing to stdout. ''​sbexpand'':​ Convert tabs to spaces and vice versa. Works like expand and unexpand commands, but opeates directly on the file instead of writing to stdout.
- 
-<code bash> 
-#!/bin/bash 
-# File:    sbexpand 
-# Version: 2008-09-16 
-# Author: ​ Stefan Beckert ​ http://​wiki.think-deep.com/​becki:​start 
-# License: Public Domain 
-#          No warranty expressed or implied. Use at your own risk. 
-# Description:​ 
-#   see usage 
-# Installation:​ 
-#   Save this script to /​usr/​local/​bin/​sbexpand 
-#   Crate a symlink: /​usr/​local/​bin/​sbunexpand -> sbexpand 
- 
-expa='​sbexpand'​ 
-unex='​sbunexpand'​ 
-scna=$(basename $0) 
-tmpf=/​tmp/​$scna.$$ 
-tabsize=8 
- 
-usage="​$scna Usage:\n\ 
-  same as (un)expand commands (see 'man expand'​),​\n\ 
-  but the file(s) are convertetd directly instead of sending it to stdout"​ 
- 
-printError() { 
-    echo "$scna Error: $1" >&2 
-} 
- 
-printErrorAndExit() { 
-    printError "​$1"​ 
-    echo -e $usage >&2 
-    exit $2 
-} 
- 
- 
-# Get direction of conversion: 
-case "​$scna"​ in 
-    $expa ) command='​expand';;​ 
-    $unex ) command='​unexpand';;​ # not tested yet! 
-    *     ) 
-        printErrorAndExit "​Rename this script to $expa or $unex!"​ 2 
-    ;; 
-esac 
- 
-# Get Tabsize: 
-while getopts "​t:"​ Option; do 
-    case $Option in 
-        t ) tabsize=$OPTARG;;​ 
-        * ) echo "​hallo";​ exit 1 ;; 
-    esac 
-done 
-shift $(($OPTIND - 1)) # Decrements the argument pointer 
- 
-# Test number of command line arguments: 
-if [ $# -lt 1 ]; then 
-    printErrorAndExit "​Filenames are missing!"​ 1 
-fi 
- 
-# do the work: 
-for arg in "​$@";​ do  # $@ sees arguments as separate words. 
-    if [ -w $arg ]; then 
-        $command -t $tabsize $arg > $tmpf 
-        if [ $? -eq 0 ]; then 
-            cat  $tmpf > $arg # no mv, because mv resets the file permissions 
-        else 
-            printError "​$command failed to convert $arg" 
-        fi 
-    else 
-        printError "$arg is not a file or is write protected"​ 
-    fi 
-done 
- 
- 
-if [ -e $tmpf ]; then 
-    rm $tmpf 
-fi 
-</​code>​ 
  
 ==== Cange indentation width == ==== Cange indentation width ==
  
 ''​sbindent'':​ Cange indentation width eg. of source code files ''​sbindent'':​ Cange indentation width eg. of source code files
- 
-<code bash> 
-#!/bin/bash 
-# File:    sbindent 
-# Version: 2008-09-16 
-# Author: ​ Stefan Beckert ​ http://​wiki.think-deep.com/​becki:​start 
-# License: Public Domain 
-#          No warranty expressed or implied. Use at your own risk. 
-# Description:​ 
-#   see usage 
- 
-scna=$(basename $0) 
-tmpf=/​tmp/​$scna.$$ 
-oldindent=''​ 
-newindent=''​ 
- 
-usage="​$scna Usage:\n\ 
-  $scna -o oldIndentSize -n newIndentSize file1 [file2 [...]]\n\ 
-  Note that there must not be any hard tabs in the source file(s).\n\ 
-  Use bfuexpand to convert them to soft tabs first."​ 
- 
-printError() { 
-    echo "$scna Error: $1" >&2 
-} 
- 
-printErrorAndExit() { 
-    printError "​$1"​ 
-    echo -e $usage >&2 
-    exit $2 
-} 
- 
-# Get Tabsize: 
-while getopts "​o:​n:"​ Option; do 
-    case $Option in 
-        o ) oldindent=$OPTARG;;​ 
-        n ) newindent=$OPTARG;;​ 
-        * ) exit 1 ;; 
-    esac 
-done 
-shift $(($OPTIND - 1)) # Decrements the argument pointer 
- 
-# do we have everything that we need? 
-if [ ! "​$oldindent"​ ]; then 
-    printErrorAndExit "old indent size is missing! (-o)" 1 
-fi 
-if [ ! "​$newindent"​ ]; then 
-    printErrorAndExit "new indent size is missing! (-n)" 1 
-fi 
-if [ $# -lt 1 ]; then 
-    printErrorAndExit "​filenames are missing!"​ 1 
-fi 
- 
-# do the work: 
-for arg in "​$@";​ do  # $@ sees arguments as separate words. 
-    if [ -w $arg ]; then 
-        unexpand -t $oldindent --first-only $arg > $tmpf # spaces 2 tabs 
-        expand ​  -t $newindent $tmpf > $arg # tabs 2 spaces 
-    else 
-        printError "$arg is not a file or is write protected"​ 
-    fi 
-done 
- 
-# clean up 
-if [ -e $tmpf ]; then 
-    rm $tmpf 
-fi 
-</​code>​ 
  
becki/sources/file_utilities.1221571334.txt.gz · Zuletzt geändert: 2009-04-24 09:57 (Externe Bearbeitung)

Impressum - Datenschutzerklärung