ファイルを含む「file.list」のリストがあります.bed
。.bed
"file.list"ファイルから拡張子を削除したいです。
私はそれを試しましたが、sed -i 's/.bed//g' file.list
動作しません。
答え1
file.list
説明した方法でファイルの内容を変更するには、次のようにします。
sed 's/\.bed *$//' file.list >file.list.tmp && mv file.list.tmp file.list
これはすべての実装に適用されますsed
(-i
コマンドラインフラグは実装間で移植可能ではないため悪名高いですsed
)。結果を一時ファイルに書き込んでエラーが発生しない場合(ディスク容量不足など)、元のファイルはこの一時ファイルに置き換えられます。
この式は各行の末尾から文字列を削除しますs/\.bed *$//
。.bed
また、末尾のスペースも許可されます(これも削除されます)。
実際の名前を変更する文書1行に1つのファイル名を想定してに一覧表示されますfile.list
。
while IFS= read -r name; do
echo mv "$name" "${name%.bed}"
done <file.list
これにより、echo
名前の変更が実際に発生するのを防ぎます。まず、その場所で一度実行して動作することを確認する必要があります。
変数置換は${name%.bed}
値の終わり(読み取った行)から削除されます。.bed
$name
file.list
答え2
私が見るには、file.listにファイルのリストがあり、そのファイルの名前を.bedサフィックスに変更して実際のファイルから削除するだけです。
xargs -d'\n' -a file.list rename -n 's/\.bed$//'