csv
フォルダに多数のファイルが保存されています。 1行を含むファイルだけを削除したいのですが、csv
どうすればよいですか?
答え1
名前付きファイルの行数をMyFile.csv
渡すことができますwc -l <MyFile.csv
。この数字をファイルと比較し、次を1
使用してファイルを削除できます。
if [ "$( wc -l <MyFile.csv )" -eq 1 ]; then
rm -i MyFile.csv
fi
これは$(...)
コマンドの置き換えであり、その中のコマンドの出力に置き換えられます。この-i
オプションを使用rm
すると、ユーティリティからエントリを削除する前に確認を要求します。
これを現在のディレクトリのすべてのCSVファイルに昇格させるには、次の手順を実行します。
for filename in ./*.csv; do
if [ "$( wc -l <"$filename" )" -eq 1 ]; then
rm -i "$filename"
fi
done
現在のディレクトリまたはサブディレクトリのすべてのCSVファイルに追加昇格するには、次の手順を実行します。
find . -type f -name '*.csv' -exec sh -c '
for pathname do
if [ "$( wc -l <"$pathname" )" -eq 1 ]; then
rm -i "$pathname"
fi
done' {} +
特にスクリプトファイルの削除をテストする場合は、データをバックアップする必要があります。