[英]Shell script to delete particular files
我有多層文件夾示例 a(b(c(d(u,v))))
這里在每個級別都有一個文件夾sync
,例如在每個目錄中都存在sync
文件夾,即a/sync
、 a/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.