私は次のことをしたいと思います:
- すべての項目を見つけて置き換え(正規表現を使用)、空の
<>:"\|?
文字列に置き換えます。 - すべての項目を見つけて置き換え(正規表現を使用)、空の
^\.+|\.+$
文字列に置き換えます。
テストで2つのフォルダを手動で作成し(スクリーンショットを参照)、以下を実行しました。
find "/home/users/Downloads/test" -regextype sed -regex "*<>:\|?*" -type d
find "/Users/chiyo/Downloads/test" -regextype sed -regex "*[<>:\|?]*" -type d
find "/Users/chiyo/Downloads/test" -regextype sed -regex "[<>:\|?]" -type d
何も見つかりませんでした。
私はこのバージョンを使用していますfind
。
=> find --version
find (GNU findutils) 4.6.0
Copyright (C) 2015 Free Software Foundation, Inc.
これを行う方法についてのアイデアはありますか?
ベストアンサー1
最初の2つの例は古いです。
*<>:\|?*
0個以上の以前の原子を表すために。は使用できません*
。*
また...が続くという意味もあり、特殊<
文字です。>
:
?
*[<>:\|?]*
これは、使用した文字クラスに近いですが、まだ*
起動段階です。[<>:\|?]
子正規表現のマッチは一致しますが、そうではありません。ディレクトリパスを含む完全なファイル名が一致する必要があります。
したがって、正規表現コードを追加して、前後に来るものを使用してください。 (以前の原子を0個以上保証する.
文字です。したがって、何でも一致します。)*
.*
だから試してみてください.*[<>:\|?].*
あなたはこのようなものを置き換えるのではなく、何で置き換えたいのか言うことはありません。