MacからLinuxサーバーにファイルを移動した後に取得する厄介な._および.DS_Storeファイルを削除する解決策はありますか?
開始ディレクトリを指定してそれを手放しますか?/ var / www / html /のように...
MacからLinuxサーバーにファイルを移動した後に取得する厄介な._および.DS_Storeファイルを削除する解決策はありますか?
開始ディレクトリを指定してそれを手放しますか?/ var / www / html /のように...
回答:
ディレクトリに移動し、次を使用します。
find . -name ".DS_Store" -print0 | xargs -0 rm -rf
find . -name "._*" -print0 | xargs -0 rm -rf
テストされていません。最初にxargsなしで試してください!
最初にディレクトリに変更する代わりに、検索後のピリオドをディレクトリに置き換えることができます。
find /dir/here ...
-delete
アクションをサポートしているため、これを短縮できます。@JT:これはで再帰的に検索します.
。存在するファイルとサブディレクトリの数によって異なります...それらのアップロードを単に禁止することはできませんか?
-r
(再帰)あなたはどのディレクトリを削除したくないので、フラグはこの場合にはお勧めしません...
command rm
(、より直接的である)よりよい解決策になりますか?(「直接」とは、当面の問題だけを扱い、それにより不要な副作用が発生する可能性が低くなり、コードを保守する必要のある人にとって説明がわかりやすくなることを意味します。後で)
新しいfindutilsはをサポートしている-delete
ので、
find . -name ".DS_Store" -delete
追加-print
して、削除のリストも取得します。
最新のPOSIXシステムがあれば、コマンドは機能します。少なくとも、OS X 10.8では動作し、macOS 10.12(Mojave)でテストした他のユーザーでも動作します。
@ X-Istenceの投稿へのコメントで、@ ephemientの功績をたたえます(独自の回答を保証するのに十分役立つと考えられていました)。
find
デフォルトでは現在の作業ディレクトリに再帰するため、必要ありません。
.
macOS 10.12(Sierra)ではまだ必要です。
簡単なコマンド:
rm `find ./ -name '.DS_Store'` -rf
rm `find ./ -name '._'` -rf
幸運を!
rm -i
しかし、注意してください、私はこれを使用しました./ -name '* py'` -rf , which did NOT prompt me to delete files. you will need to take it on the end (i.e.
-rfi`)。バックアップスクリプトを神に感謝します。
-bash: /bin/rm: Argument list too long
cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm
cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm
bashの代わりにzshに切り替えることができます。これにより、**を使用して、ディレクトリツリーの任意の場所にあるファイルを照合できます。
$ rm /var/www/html/**/_* /var/www/html/**/.DS_Store
次のように組み合わせることもできます。
$ rm /var/www/html/**/(_*|.DS_Store)
Zshには他にもbashにはない機能がたくさんありますが、その機能だけでも切り替えの価値があります。ほとんどの(おそらくすべての)Linuxディストリビューションだけでなく、cygwinやOS Xでも使用できます。
詳細については、zshサイトをご覧ください。
**
します:shopt -s globstar
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
find
サポートされていることを、それは、+
:xargsのに似ているfind . -name "FILE-TO-FIND" -exec rm -rf {} +
(また、あなたの前にスペースが不足している- -exec
)
「Thumbs.db」を再帰的に削除する例。
find . -iname "Thumbs.db" -print0 | xargs -0 rm -rf
検証:
find . -iname "Thumbs.db"
これにより、現在のパス内に「Thumbs.db」を持つエントリが表示されなくなります。
xargs
したい理由を説明してください。print0
exec
Bash 4.0 ++を使用している場合
#!/bin/bash
shopt -s globstar
for file in /var/www/html/**/.DS_Store /var/www/html/**/._
do
echo rm "$file"
done
注意すべきいくつかの事柄:
「-delete」は再帰的ではありません。したがって、.TemporaryItems(フォルダー)にファイルがある場合、コマンドは失敗します。
Macによって作成されたこれらの厄介なファイルがたくさんあります:.DS_Store ._。DS_Store .TemporaryItems .apdisk
この1つのコマンドは、それらすべてに対処します。複数の一致に対してfindを繰り返し実行することによる保存。
find /home/foo \( -name '.DS_Store' -or -name '._.DS_Store' -or -name '._*' -or -name '.TemporaryItems' -or -name '.apdisk' \) -exec rm -rf {} \;
これも機能します:
sudo rm -rf 2018-03-*
ここでは、2018-03-(その他)という形式の名前の削除ファイル
単純にする
sudo
どのようにrm
機能するかについての情報を提供したりしません。