ls出力から出力ファイルを除外する方法

ls出力から出力ファイルを除外する方法

私のデスクトップに次のファイルがあるとしましょう。

aaa.jpg  
bbb.jpg   

これら2つのjpgをリストして、.txtファイルに出力したいと思います。

#!/bin/bash
cd ~/Desktop
ls -1 > all.txt

このコードを使用すると、all.txt次のような結果が得られます。

aaa.jpg  
bbb.jpg  
all.txt

私はこの2つのjpgが欲しいですall.txt

答え1

.jpgファイルにのみlsフィルタを使用できます。

ls *.jpg > all.txt

答え2

返信ありがとうございます。しかし、.jpgだけでなく、すべてをリストしたいと思いました。簡単な解決策があることに気づきました

ls * > all.txt

変える

ls > all.txt

ワイルドカードを追加すると、出力ファイルがそれ自体に含まれない理由を知っている人はいますか?

答え3

@ShayneManningが提案したものよりも一般的な解決策は次のとおりです。

ls | grep -v '^all.txt$' > all.txt

grepコンテンツごとに行をフィルタリングするために使用されます。このオプションは-vフィルタを反転します。したがって、all.txtの出力から除外されますls。他のすべての名前はに印刷されますall.txt

関連情報