簡體   English   中英

用於刪除特定文件的 Shell 腳本

[英]Shell script to delete particular files

我有多層文件夾示例 a(b(c(d(u,v))))

這里在每個級別都有一個文件夾sync ,例如在每個目錄中都存在sync文件夾,即a/synca/b/sync等等。

我正在尋找編寫一個 shell 或 tcl 腳本,它將進入每個文件夾並刪除特定的文件(同步)。

誰能指導我?
謝謝
再會

您可以使用rmdir ./**/.sync
這將在當前目錄中遞歸搜索每個名為sync的目錄並將其刪除。

對於雙星號的使用,另請參閱此答案

請注意,這只會刪除目錄(文件夾)並且如果它不為空。

要刪除包含所有文件的目錄,請使用rm -r ./**/.sync

查找並刪除...

find . -type d -name sync -exec rm -rf {} \;

說明:

  • . : 搜索當前目錄
  • -type d : 只搜索目錄
  • -name sync : 搜索名為“ sync ”的文件/目錄
  • -exec ... :對找到的每個文件/目錄執行此命令
    • rm -rf : 刪​​除文件和目錄名為 ...
    • {} :由find命令找到的每個文件/目錄替換
    • \; : 和-exec選項

由於到目前為止所有的答案都是 shell 方法,這里有一個 tcl 方法:

#!/usr/bin/env tclsh

proc delete_syncs {dir} {
    foreach subdir [glob -directory $dir -types d -nocomplain *] {
        delete_syncs $subdir
        set sync [file join $subdir .sync] ;# Or sync or .SYNC or whatever it's actually named
        if {[file exists $sync]} {
            file delete -force -- $sync
        }
    }
}
foreach basedir $argv {
    delete_syncs $basedir
}

將基本目錄(或目錄)作為命令行參數進行掃描。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM