
www.thethinkfoundation.org
次のような行で終わるテキスト ファイルがいくつかあります。
file1.www.thethinkfoundation.org.txt
file2.www.thethinkfoundation.org.txt
.
.
.
file100.www.thethinkfoundation.org.txt
削除したいwww.thethinkfoundation.org
これを実現するために、ターミナルで次のコマンドを試しました。
for f in www.thethinkfoundation.org*; do mv "$f" "${f#thethinkfoundation.org}"; done
結果は次のとおりです。
file1..txt
file2..txt
.
.
.
file100..txt
有効な解決策を事前にお知らせいただきありがとうございます。
PS: コマンドは使いたくありませんrename
。実際、Linux と *BSD ディストリビューションで動作するコマンドを探しています。私が好むテキスト エディターは ですnano
。
答え1
部分文字列の置換はシェルパラメータの拡張bash
およびその他のいくつかのシェルでも、次の 2 つの方法で実現できます。
初めを置き換えることができます最初の出現のみ(左から右へ) のパターンは次のようになります。
${var/pattern/replacement}
2番を置き換えることができますすべての出現次のようなパターンです:
${var//pattern/replacement}
はvar
文字列を含む変数/パラメータで、pattern
は文字列内で検索して置換するパターンで、replacement
はそれを置き換える置換で、文字列からそのパターンを削除するだけのpattern
場合は空のままにすることもできます${var//pattern/}
。
したがって、望ましい解決策は次のようになります。
for f in *www.thethinkfoundation.org*; do
echo mv -n -- "$f" "${f//www.thethinkfoundation.org./}"
done
最初にテストしてから取り出して再度実行し、実際の作業が行えるように、echo
ドライランを追加しました。echo