重複の可能性:
文字列からファイル拡張子を削除する最良の方法は何ですか?
拡張子を削除して複数のファイルの名前を変更するには?
データベースにロードしたい.txtファイルがたくさんあります。
これらのテーブルは.txtファイルと同じ名前ですが、拡張子はありません。
だからコマンドを実行したい
for f in *.txt; do mysql -u root -p -e "LOAD DATA LOCAL INFILE '$f' INTO TABLE $f" -D rn4; done
しかし最後は、$f
拡張子ではなく名前だけを使用したいので、頭が痛い。
したがって、ファイルの場合、piRNA.txt
コマンドは次のようになります。
mysql -u root -p -e "LOAD DATA LOCAL INFILE 'piRNA.txt' INTO TABLE piRNA" -D rn4
どうすればいいですか?
答えが他の人に役立つように、ただコマンドだけを与えないでください。
答え1
シェルスクリプトでこれを行うことができます。
f=piRNA.txt
g=${f%.txt}
実行中
echo $f $g
次の出力が生成されます。
piRNA.txt piRNA
この%
構文を使用すると、一致するサフィックスパターンを削除できます。例のサフィックスパターン.txt
はf
削除された変数です。パターンにはワイルドカードを含めることもできます(例:バッシュマニュアル詳細はこちら)。
いつものように、ファイル名にスペースを含めることができる場合は、変数への参照を二重引用符(たとえば"$f"
など)で囲む必要があります。