-2

私は初心者regexなので、この質問が簡単すぎる場合はご容赦ください。
私が聞きたいのは、ディレクトリにたくさんのファイルがあり、filesで始まるファイルのいくつかを移動することです。コマンドで正規表現を使用する方法と、 .numberspdfmvregex

4

2 に答える 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 に答える