2

タイトルが示すように、フォルダー内の で始まるすべてのファイルを再帰的に削除しようとしています._。私のサイトの各ファイルには、まったく同じ名前のファイルが存在しますが、それに._追加されています。これらを取り除くにはどうすればよいですか?

4

4 に答える 4

5

「先頭に」という意味だったと思います

後で編集

SH スクリプト:

find . -name ".?*" -exec rm {} \;
前のコードは再帰的に機能しませんでした。これはそうです。フォルダーも削除する場合は、次を使用します。
find . -name ".?*" -exec rm -R {} \;

于 2010-08-15T12:20:48.713 に答える
2

この投稿の重複の可能性があり、自分の運用サーバーで正常に使用しました。

find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete
于 2013-02-07T01:16:37.083 に答える
1

編集:以下のユーザーGillesは、xargsがファイル名の一重引用符と二重引用符を文字通りに扱わないため、次の代替手法が危険である可能性があることを正しく述べています。という名前のファイルはToday's special.txtエラーを引き起こします (引用符が終了していません)。ウェブ上で広く言及されているため、完全を期すためにここに含めます。

rm にパイプすることにより、Unix/Mac でこれを行う別の同様の方法。

find . -name '.*' -type f | xargs rm -f

引数は、-type fディレクトリと、.、..、シンボリック リンク、devs などの特別なファイルを無視するように指示します。

残念ながら、入力パターンは rm コマンドに渡される前にシェルによって展開されるrm -R .*ため、次のようなものは使用できません。.*開始ディレクトリのファイルに一致するすべてのファイルを再帰的に削除することになります。

Windows の同等のコマンド ( ) は、プログラムが各サブディレクトリのワイルドチャードを展開する作業をdel -R .*行うため、ユーザーにとってははるかに簡単です。del

于 2010-08-15T12:59:46.093 に答える