すべてのサブディレクトリを削除するにはどうすればよいですか?(unixシェルスクリプト)

Jan 15 2021

「cdrs-roaming」というディレクトリがあります。毎日、1つ以上の.zipファイルを受け取り、次のコマンドで解凍します。

#!/bin/bash
for i in *.zip
do
    j=${i//\.zip/} mkdir $j
    cd $j unzip ../$i
    cd -
done 

次に、たとえば「example1.zip」と「example1」があります。「example2.zip」と「example2」

これですべてのzipファイル(この場合は「example1.zip」と「example2.zip」)を削除します。

#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;

だから私はディレクトリ(またはフォルダ-私は本当に違いがわかりません)「example1」と「example2」を削除したいと思います。私はこれを試しました:

#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

ただし、「cdrs-roaming」も削除されます。私も使用しようとしました:

find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

しかし、それは戻ります:find: '/ cdrs-roaming /':そのようなファイルまたはディレクトリはありません

これを行うためのアイデアはありますか?「cdrs-roaming」内のディレクトリのみを削除する必要がありますが、その中の他のものを削除することはできません(私の.shファイルはその中にあります)

回答

2 user1934428 Jan 15 2021 at 15:17

bashを使用しているので、どうですか

rm -rf /dados/cdrs-roaming/*/

最後のスラッシュは、bashがパターンをディレクトリにのみ展開することを保証します。

1 TimurShtatland Jan 15 2021 at 05:27

使用-mindepth 1オプション:

find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;