GNU/Linux >> Linux の 問題 >  >> Linux

LinuxのNOTディレクトリのディレクトリ内のファイルのみを削除します

これは Google 検索で上位に表示されるため、最も簡単な答えは次のとおりです。

rm $directoryPath/*

$directoryPath は、空にするディレクトリです。クレジットは cbm3384 に送るべきです (何らかの理由でこの回答に反対票が集まっているのはなぜですか?)

確認したくない場合:

rm -f $directoryPath/*

信じられない場合は man rm を試してください または

mkdir -p 1/2/3; echo 'hello1' > 1/hello1.txt; echo 'hello2' > 1/2/hello2.txt;echo 'hello3' > 1/2/3/hello3.txt
rm 1/2/*

上記は、各フォルダーに「helloX.txt」を持つディレクトリ構造を作成します (X はディレクトリ レベルです)。 rm 1/2/* hello2.txt を削除します 他の構造はそのまま残します。

rm */*/*hello2.txt のみを削除します .パターンに一致するのはこれだけです。

Cakephp の tmp-directory をクリーンアップし、ディレクトリ構造をそのままにしておく Makefile の例:

clean:
    -rm -f tmp/*
    -rm -f tmp/*/*
    -rm -f tmp/*/*/*
    -rm -f tmp/*/*/*/*

rm の前のマイナス 「エラーで停止しない」ことを意味します (削除されていないディレクトリはエラーを返します)。レベルを保存したい場合は、その行を削除してください。 2 番目の rm 行はログを削除します。

何か他のことをするシステム (BSD?) をお持ちなら教えてください。

編集: これをubuntu 12.04、osx lion、およびsourceforge.netシェルでテストしました。すべてが上記の説明のように動作します。


find PATH -maxdepth 1 -type f -delete

でも これは、確認を求めたり、削除したばかりのものを出力したりすることはありません。したがって、最初に -delete アクションなしで実行し、それらが正しいファイルであることを確認することをお勧めします。


find を使用できます -type f で ファイルのみおよび -maxdepth 1 の場合 だから find /path/to/directory のサブディレクトリ内のファイルは検索しません . rm -i 削除するたびにプロンプ​​トが表示されるので、削除を確認または拒否できます。削除のたびに確認を求められても構わない場合は、rm -fv に変更してください。 (-f のために 削除)。 -v フラグは、削除するたびに、どのファイルが削除されたかを示すメッセージが出力されるようにします。

find /path/to/directory -maxdepth 1 -type f -exec rm -iv {} \;

これは基準を満たす必要があります:

<ブロック引用>

ないディレクトリ
サブディレクトリではない
これらのサブディレクトリ内のファイルではありません。


Linux
  1. LinuxでsFTPを使用してファイル/ディレクトリをアップロードまたはダウンロードする方法

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. Linuxでディレクトリの名前を変更する方法

  1. Linuxでファイルとディレクトリをコピーする

  2. バックアップする必要がある9つのLinuxディレクトリとバックアップしない1つのLinuxディレクトリ

  3. Linuxコマンドラインでファイルとディレクトリを削除する方法[初心者向けチュートリアル]

  1. Linux ファイルとディレクトリの削除

  2. Linux でのファイルとディレクトリの作成と削除

  3. Linux でのファイル/ディレクトリの最大数は?