私は初心者regex
なので、この質問が簡単すぎる場合はご容赦ください。
私が聞きたいのは、ディレクトリにたくさんのファイルがあり、files
で始まるファイルのいくつかを移動することです。コマンドで正規表現を使用する方法と、 .numbers
pdf
mv
regex
質問する
210 次
2 に答える
3
Linux コマンド プロンプトを使用している場合、実際にはRegexを使用していませんが、代わりにGLOB表記を使用しているため、これは異なります。それを読んでください。GLOB は、説明したような複雑なパターンを取ることはできません。実際の正規表現を使用する必要があります。
あなたの場合、grep
の出力でコマンドを使用しls
て、要件を満たすファイルを見つけてから呼び出すmv
ことができます。このようなもの:
while read fileName; do mv $fileName destination_folder; done < <(ls -1 | grep -E '[0-9].*\.pdf')
それを分解しましょう:
while read fileName; do
mv $fileName destination_folder;
done < <(ls -1 | grep -E '[0-9].*\.pdf')
したがって、基本的にwhile
は、最後の行の出力から入力を取得する loopを使用して、ディレクトリ リストを読み取りますls -1 | grep -E '[0-9].*\.pdf'
。スペースを含むファイル名に対応するにはwhile
、(単純なループの代わりに)ループを使用する必要があります。for
コマンドはls -1 | grep -E '[0-9].*\.pdf'
基本的にファイル名をリストアップし、指定された正規表現パターンに一致するものだけを取得します。
于 2013-09-17T04:50:48.740 に答える
2
あなたも使うことができますfind
:
find . -maxdepth 1 -name "[0-9]*.pdf" -exec mv {} destination \;
于 2013-09-17T05:36:27.320 に答える