2016-12-10 9 views
1

にいくつか述べた以外のすべてのフォルダを削除するにはどうすれば持っている私のwp-contentフォルダ内の以下のフォルダ構造=>のlinux

2016/ => it has many subfolders in it and I wanna keep them 
2015/ => it has many subfolders in it and I wanna keep them 
2014/ => it has many subfolders in it and I wanna keep them 
2013/ => it has many subfolders in it and I wanna keep them 

besides those folder there are tons of temp folders which I want to delete along with anything inside it. The folder name look like this: 

ZhsvhgTjh/ 
Vgfsugu79/ 
1agDjgdki/ 
8gdygREfh/ 
Hbjddsyug/ 
....so on.... 

今の問題は、私はrm -fを実行する場合、それはつもりその内部のすべてを削除されていますフォルダには2016, 2015, 2014, 2013のようなフォルダが含まれます。

また、1つのフォルダ名でしか動作しません。ランダムなフォルダ名にはそれぞれ20,000+個の一時フォルダがありますので、狂っています。

だから、2016, 2015, 2014, 2013のフォルダとその内容以外のすべてのフォルダとその中のコンテンツを削除できるコマンドを誰かが手伝ってくれることを願っていました。

また、このコマンドを削除すると、クエリが適切な数のフォルダを選択しているかどうかを確認するためのcountコマンドを実行する方法があるかどうかを教えていただけますか?私は間違って重要なものを削除したくない。

ありがとうございます。

+0

可能性のある重複した[指定された名前以外のファイルを見つける方法?](http://stackoverflow.com/questions/19020759/how-to-find-files-except-given-name ) –

答えて

2

プリントツリー

[email protected]:~/tmpp/wp-content$ ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' 
    . 
    |-2015 
    |---keep2 
    |---keep3 
    |-2016 
    |---keep1 
    |---keep2 
    |-NKAXOIND 
    |-x232sfsw 
    |---we233ds 

表示ガベージフォルダ:

[email protected]:~/tmpp/wp-content$ find . -type d | grep -Pv '20\d{2}' | tail -n +2     ./x232sfsw 
    ./x232sfsw/we233ds 
    ./NKAXOIND 

[email protected]:~/tmpp/wp-content$ find . -type d | grep -Pv '20\d{2}' | tail -n +2 | wc -l 
3 

は彼らに

[email protected]:~/tmpp/wp-content$ find . -type d | grep -Pv '20\d{2}' | tail -n +2 | xargs rm -rf 
を削除し、それらをカウント

ショーの木再び

[email protected]:~/tmpp/wp-content$ ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' 
    . 
    |-2015 
    |---keep2 
    |---keep3 
    |-2016 
    |---keep1 
    |---keep2 
+0

こんにちは、私は質問があります。私は複数のフォルダを除外したい場合は好きなのAIたいが、その中にこれらの次のフォルダとすべてのコンテンツを除外する言うことができます: '2016/ 2015 /、 2014 /、 nginxのヘルパー/、 wpseo-リダイレクト/、 gravity_forms /'どのようにすることができます私は私の必要性に合わせて上記のコマンドを編集しますか?私が見ることができるように、 '20'で始まるフォルダだけを除外しています。ご協力いただきありがとうございます。 – iSaumya

+0

gregeに正規表現を追加すると、最初の1つの20 \ d {2}は2000年から2000年の第1世紀に一致します 'find。タイプd | grep -Pv '(20 \ d {2} | nginx | wpseo)' |テール-n + 2 – bua