ls
特定のファイル名で始まるディレクトリにファイルを保存するには?
たとえば、私のCWDに次のファイルがあるとします。
$ ls -1
alpha.mp3
bar.xls
file1.txt
file2.txt
foo.odt
testing3.txt
"file2.txt"で始まるファイルを印刷するには:
file2.txt
foo.odt
testing3.txt
または「foo.odt」から:
foo.odt
testing3.txt
?
答え1
zsh
シェルとして使用する場合、これを使用できますグローバル予選選択したファイルの前にアルファベット順に含まれていないファイル名のみを選択します。1 。
前任者。与えられた
% ls -1
alpha.mp3
bar.xls
file1.txt
file2.txt
foo.odt
testing3.txt
次にヘルパー関数を定義します。
% nt() { ! [[ $NTREF > $REPLY ]] }
〜の後
% NTREF=file2.txt; ls -1 -- *(+nt)
file2.txt
foo.odt
testing3.txt
% NTREF=foo.odt; ls -1 -- *(+nt)
foo.odt
testing3.txt
正規化されたglobを直接使用して、リストを停止コマンドに渡すことができます。
% NTREF=foo.odt
% yourcommand -- *(+nt)
- または、もっと簡単に使用して最後のファイル名に
nt() { [[ $REPLY > $NTREF ]] }
設定します。NTREF
以前は正常に処理されました
答え2
ファイルリストの繰り返し中に中断されたプロセスを再開するには、ファイルリストを再生成し、再起動するファイルが見つかるまで削除できます。
set -- *
# see the "before" situation
printf '%s\n' "$@"
while [ "$1" != "file2.txt" ]
do
shift
done
# check the results
printf '%s\n' "$@"
その後、次のファイルリストを使用してプロセスを実行できます。
$ your-process "$@"
上記は、割り込みプロセスに「自然な」拡張順序でファイルのリストが提供されることを前提としています。ls
これは、ファイルのリストを指定しない場合に実行されるアクションです。
答え3
これは後処理ソリューション、使用、sed
またはawk
:
ls -1 | sed -n '/'"$filename"'/,$p'
または
ls -1 | awk '/'"$filename"'/,EOF'
その中では、例えば
filename='file2.txt'