私のデスクトップに次のファイルがあるとしましょう。
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
。