このタイプの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/.