厄介な「.DS_Store」ファイルを削除する


13

OS Xを使用している場合、Finderを使用した結果として生成される悪名高い隠し ".DS_Store"ファイルに慣れているかもしれません。

課題は、ファイルシステム全体を通過し、「。DS_Store」という名前のファイルを削除するコードを記述することです。

クラシックコードゴルフ-最短コードが勝ちます。


明確化:

  • コードでは、スーパーユーザーを必要とする.DS_Storeファイルを削除する必要ありませ。そのようなファイルが存在しないと仮定します。

  • コードは、関連する.DS_Storeファイルのみを削除し、それ以外は何も削除しません。


3
コードは、スーパーユーザーを必要とする.DS_Storeファイルを削除する必要がありますか(sudoを呼び出す必要がありますか)?
カヤ

1
@Kaya良い質問:いいえ、そのようなファイルを削除する必要はありません。
アルシャジー

27
名前.DS_Storeも付けられていないファイルを削除しても大丈夫ですか?
ジョーイアダムス

1
@JohannesKuhn最新の編集は自明のはずだったと思います。完全を期すために追加しました。しかし、それでも賢い答えに感謝します!
アルシャジー

1
@Joey —質問を軍事分野に転置します。たとえば、うーん…アメリカ軍、ランダム^^。そして、「。DS_Store」という名前のファイルを「殺す人」に置き換えます。そして、「唯一」の要件が明らかになるにはほど遠いことがわかります。
ニコラスバルブレスコ

回答:


14

zsh、19

rm -f /**/.DS_Store

(省略しても問題ない場合は、16にし-fます。)


12

Bash *、40 30

find / -name .DS_Store -delete

find / -name .DS_Store -exec rm -f {} \;

これはそれを処理する必要があります(あまりゴルフではなく、驚くほど遅くはありません)。「インポートシステム」のナンセンスに対処する必要がないので、Bashは正しいようです。任意の環境で実行する必要がある場合は、4文字を追加しbash、1 文字を改行に追加します。

* Bourne Againシェルが唯一のシェルであると仮定すると、習慣から抜け出すことはできません。


1
Bashはまさにそのための適切なツールです。
ヨハネ

1
findOS Xはどのようなものですか?GNU findではさらに短くなりますfind / -name .DS_Store -delete
マナトワーク

1
「引数リストが長すぎます」エラーが発生し、シェルオプションがオンになっているbash4以降が必要です。globstarまたはzshrm /**/.DS_Store
マナトワーク

1
あなたはbash固有のことを何もしていないので、shである可能性もあります。
ピーターテイラー

10
.DS_Store重要なものがあるディレクトリを削除しました。
コンラッドボロスキー


2

魚、16

rm /**/.DS_Store

(読み取り専用ディレクトリで-f削除する必要がある場合は、19にする必要があり.DS_Storeます。)




0

CMD、17

del/s "/.DS_Store

とても簡単です。

/sサブディレクトリ内の検索にも必要です。そうでなければ(無効な)引数として解釈されるchar
"をエスケープするために使用され/ます。


-1

見つける、38

前のfind解決策は明らかに間違ってい.DS_Storeます。ディレクトリ、リンク、特殊ファイルなどを含むすべての名前を削除するということです。

だが:

find / -type f -name .DS_Store -delete

を使用した最小のソリューションfindです。

免責事項:実際の* nixボックスでこのソリューションを実際に使用することは強くお勧めしません。再帰的に何かを削除しようとすること/は非常に悪い考えです。警告されます。

編集

ファイル、ディレクトリ、リンク(ハードおよびシンボリック)、名前付きパイプ、ソケット、特殊ファイル、擬似ファイルシステムの違いが明確でない場合は、この未知の用語のいくつかをグーグル検索することをお勧めします。あなたは驚きで、賢く、(catstrofic)エラーを起こしにくいでしょう。

EDIT2:さらに関連性が高い:OPは「コードは関連する.DS_Storeファイルのみを削除し、それ以外は何も削除しない」と書きました。:だから、もし誰かが退屈な要件を読みたければ、このファイル以外のものを削除するすべてのソリューションはおかしくて、賢く、電気ショック療法です。しかし間違っている


前のfind解決策は正しいです。質問は「「.DS_Store」という名前のファイルを削除します」と言います。そのため、ファイルタイプに基づく特別な要件はありません。
マナトワーク

@ manatwork:ナンセンス:ファイルはディレクトリとは異なるものです。あなたのねじれた線に沿って、最善の解決策はまだrm -rf /
DavAlPi

2
ああ、あなたはグーグルではありませんでした:en.wikipedia.org/wiki/Everything_is_a_file
ヨハネス・クーン

3
ああ、他のこと:コードゴルフの目標は、最短の解決策を得ることです。そのため、要件を好みに合わせて数文字節約できれば、そうです。unixのようにすべてをファイルとして扱うことにより、8文字を節約できます。PS:驚きはどこにありましたか?一部の人々が基本的なUNIXの原則を否定しているという事実は?
ヨハネ

1
今、私はより良い答えを得ました。ここの誰もが理解できることです。
DavAlPi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.