著者名が「first [mi] last」(中間イニシャル/名前は複数である場合がある)のディレクトリが複数あり、これを「last, first mi」に変更したいと思います。だから、名前を複数のトークンに解析し、トークンを並べ替える方法が欲しいです。
ではawk
次のようになります。
ls | awk print '$NF", " $1,$2 ...'
答え1
これは機能しなければならず、シェルに依存しません。単一の引数(たとえば、デフォルトディレクトリ)を使用してスクリプトとして実行します。
find
指定されたデフォルトディレクトリのすぐ下にあり、変換されたディレクトリを除いて、1行に1つのディレクトリ名を取得するために使用されます。awk
リストからデフォルトディレクトリを削除し、各行で変更したい直接ディレクトリの名前のみを残すために使用されます。 (awk
ここでは、/をフィールド区切り文字として使用し、各行の最後のフィールドを印刷します。)awk
2番目の印刷コマンドを使用して、mv
要求どおりに各ディレクトリの名前を変更します。 (awk
ここでは、デフォルトのスペースはフィールド区切り文字として使用されます。)出力をファイルに保存し、適切に見える場合に実行します。
。
#!/bin/sh
find "$1" -mindepth 1 -maxdepth 1 -type d -not -name "*,*"|\
awk -F/ '{print $NF}'|\
awk -v DIR="$1" '{printf "mv \"" DIR "/" $0 "\" \"" DIR "/" $NF", "; for (i=1; i<NF; i++) {printf $i" "}; printf "\"\n"}'