tcsh ファイル名修飾子の単純さにかなり近い解決策を見つけました。4 つの関数を作成し、.bashrc に配置しました。
e() # the extension
E() # everything but the extension
t() # the tail - i.e. everything after the last /
T() # everything but the tail (head)
定義は最後にあります。
これらの関数は、次のように引数を受け入れることができます。
f=foo/bar/my_image_file.0076.jpg
e $f
--> jpg
E $f
--> foo/bar/my_image_file.0076
または、パイプからの入力を受け入れます。これは、私が本当に欲しかった tcsh の機能です。
echo $f|E|e
--> 0076
またはもちろん、組み合わせ:
T $f|t
--> bar
そして、パイプを介して多くのファイルを受け入れることに気づきました:
ls foo/bar/
--> my_image_file.0075.jpg my_image_file.0076.jpg
ls foo/bar/ |E|e
--> 0075
--> 0076
定義:
#If there are no args, then assume input comes from a pipe.
function e(){
if [ $# -ne 0 ]; then
echo ${1##*.}
else
while read data; do
echo ${data##*.} ;
done
fi
}
function E(){
if [ $# -ne 0 ]; then
echo ${1%.*}
else
while read data; do
echo ${data%.*}
done
fi
}
function t(){
if [ $# -ne 0 ]; then
echo ${1##*/}
else
while read data; do
echo ${data##*/} ;
done
fi
}
function T(){
if [ $# -ne 0 ]; then
echo ${1%/*}
else
while read data; do
echo ${data%/*}
done
fi
}