親フォルダとサブフォルダを削除せずにサブフォルダとファイルを削除しますか?

親フォルダとサブフォルダを削除せずにサブフォルダとファイルを削除しますか?

このタイプのdir構造の場合:

\\rdwlhsdevserver\root\user1\folders\testdat.txt
\\rdwlhsdevserver\root\abhay\testdat.txt
\\rdwlhsdevserver\root\testuser\folders1\folder2\testdat.txt
\\rdwlhsdevserver\root\devadmin\input\testdat.txt
\\rdwlhsdevserver\root\admin\testdata\testdat.txt

親フォルダとすべてのサブフォルダを削除するために使用できることを知っていますが、rm -rf <<folderPath>>以下を除いて削除したいと思います。\\\rdwlhsdevserver\root\Childfolder

を実行した後、cmd出力は次のようになります。

\\rdwlhsdevserver\root\user1\
\\rdwlhsdevserver\root\abhay\
\\rdwlhsdevserver\root\testuser\
\\rdwlhsdevserver\root\devadmin\
\\rdwlhsdevserver\root\admin\

答え1

rm -rf /path/to/root/*/*

注:同様のテストディレクトリ構造を作成して最初にテストしてみてください。あなたのシェルはこの構文をサポートしていないかもしれません(bashとzshでテストしました)。

答え2

GNUまたはBSDの使用find

find /path/to/root -mindepth 2 -delete

そしてzsh

rm -rf /path/to/root/*/*(D)

ただし、ディレクトリを指すシンボリックリンクがある場合、/path/to/rootそのディレクトリ内のファイルはその後に削除されます。内蔵機能を有効にして解決Arg list too bigできるエラーが発生する可能性があります。rm

zmodload zsh/files
rm -rf /path/to/root/*/.(D)

(内蔵バージョンはrm削除されることがあります.。)

シンボリックリンクに従わないようにするには:

zmodload zsh/files
dirs=(/path/to/root/*(D/)) && rm -rf $^dirs/.

関連情報