使用find命令删除一组目录,而不会太长时间地进入参数列表

时间:2018-04-13 02:54:11

标签: linux shell unix find

我的情况是,我的/ tmp目录中至少包含25,000 - 50,000个目录。我试图使用以下命令删除该目录中超过2天的目录。

private func setUpAutocomplete() {
    // Define intput stream
    searchBar.rx.text
        .orEmpty
        .map({
            (query: String) -> [String] in
            let res = AllGenes.filter { $0.hasPrefix(query) }
            return res
        })
        .bind(to: tableView.rx.items(cellIdentifier: cellIdentifier,
                                     cellType: GeneSeachTableViewCell.self)) {  row, gene, cell in
                                        cell.textLabel?.text = "\(gene) \(row)"
        }
        .disposed(by: disposeBag)

} 

但是我继续遇到参数列表太长的错误。如何具体限制删除的目录数量?我尝试使用maxdepth 1选项,但似乎没有用。

1 个答案:

答案 0 :(得分:-1)

* glob使shell扩展所有目录名称并将其传递给find。摆脱它,让find完成工作而不是shell。

find /path/to/tmp/ -mindepth 1 -type d -ctime +2 -delete

-mindepth 1确保find仅处理子目录,而不是/path/to/tmp本身。

如果这些目录不为空,则需要将-delete切换为rm -r

find /path/to/tmp/ -mindepth 1 -type d -ctime +2 -exec rm -r {} +