2016-12-15 4 views
1

ファイルを読み込み、ファイル名を解析して削除します。私の場合、これは、ファイルの各行の最初のタブの後にあるすべてを削除して、ファイル名を取得してからファイルにrm -iを呼び出すことを意味します。ファイル名のファイルを解析して対話的に削除する方法

これは私がこれまで持っているものですが、それはちょうど私がxargs rm-iを追加する場合、それは私がすることができますy/n

while IFS=' ' read -r line; do 
    #echo ${line%*} 
    sed -e 's/\t.*$//' | xargs rm 
done < $1 
+0

uは....いくつかのサンプルの入力と出力を投稿することができます他の人が理解することが容易になるだろう... – Teja

答えて

2

問題はrm -iは、はい/いいえの標準入力を要求するということです。 whileループにリダイレクトし、xargsにパイプします。どちらもrm -iのstdinをオーバーライドします。

あなたは xargsを回避し、またあなたのループに別のFDを使用するように書き換えることができます

while IFS=$'\t' read -u 3 -r file _ 
do 
    rm -i "$file" 
done 3< yourfile.txt 
1

を選択せず​​に私のテキストの壁を与える...プロンプトを表示せずにそれらのすべてを削除しますrm -iを回避し、削除するファイルごとに使用を促すためのxargs -pを使用します。

cut -f1 file | xargs -n1 -p rm 
+0

プロンプトは機能しませんでした。私はそれが他の人によって述べられた理由のためだと思う。 – Phil

+1

あなたはIFSが必要ではないということは間違いない。私は受け入れられた答えから '-u 3 'であなたの解決策を試しました。 – Phil

+1

これを動作させるために、私は 'xargs'を使う答えを修正しました – anubhava

関連する問題