1つのディレクトリを除くすべてのファイルを見つける

1つのディレクトリを除くすべてのファイルを見つける

だから、作業を始める前にディレクトリを整理したいと思います。私はちょっとこんな感じです。

./static
├── css
│   └── styles
├── img
│   └── pictures
└── js
    └── scripts

私はrmの内容が欲しいが望んでいません。cssjsimg

両方のパスを入れることができることを知っていますが、それは面倒でこの方法を試しましたが、成功しませんでした。

rm -r ./static/{css,js}/*

rm: './static/{css,js}/*' を削除できません。そのファイルやディレクトリはありません。

これを行う方法についてのアイデアはありますか?

ベストアンサー1

*あなたのコマンドはファイルとして扱われます。試してみてください。rm -rf ./static/{css,js}/

代わりに、Bash拡張ワイルドカード(最初にテストした後に削除echo):

$ shopt -s extglob
$ cd static
$ echo rm -rf !(img)

または 短い答え

ls | grep -v "img" | xargs rm -rf

コメントでOPが提案したように、この手順に従って作業を完了してください。まず、ファイルを印刷してテストを実行して、必要なものを入手したことを確認してください。

$ find . -path ./img -prune -o -type f
./css/styles
./img
./js/scripts

確認後削除してください。

$ find . -path ./img -prune -o -type f -exec rm {} \;

$ static/
  ├── css
  ├── img
  │   └── pictures
  └── js

おすすめ記事