2017-03-28 44 views
0

我正在運行一個腳本來查看文件類型的某些文件夾,但我需要修剪幾個文件夾。當我通過PuTTy使用相對文件路徑運行它時,該腳本正常工作,但是當我添加絕對文件路徑以便我可以將其作爲cron任務運行時,它不會正確修剪。Bash:Prune使用絕對路徑查找結果

這裏是我的命令:

/bin/find . -not \(-path "./Ready" -prune \) -not \(-path "./Loading" -prune \) -not \(-path "./Backups" -prune \) -name "*.txt" 

然而,當我替換「./」的完整路徑,返回結果爲它不應該被搜索的文件夾中的文件。

任何想法?提前致謝。

+0

你的意思是如果你用全路徑替換所有**出現的'。/'? –

+0

是的,所以我有$ base =完整路徑。它會搜索所有文件夾,如果我這樣做: '/ bin/find。 -not \(-path「base/Backups」-prune \)-name「/」-prune \)-not \(-path「$ base/* .txt「' – Amy

+0

正如我在下面回答:'/ bin/find $ base」-not \(-path「$ base/Ready」-prune \)-not \(-path「$ base/Loading」-prune \)-not \(-path「$ base/Backups」-prune \)-name「* .txt」' – cmks

回答

2

請注意,模式匹配測試適用於從命令行中指定的起點之一開始的整個文件名 。如果相關起始點也是絕對路徑,那麼它 只會使 有意義在此處使用絕對路徑名稱。這意味着,此命令 永遠不會匹配任何內容:

查找欄-path /富/酒吧/ MYFILE -print

您需要使用絕對路徑作爲搜索基礎了,所以交流第一. (搜索的起點),它使用與參數-path相同的絕對路徑。

find /usr -path "/usr/src/linux*" -prune -o -path "/usr/inclu*" -prune -o -name "*.txt" -print 

這將列出所有*.txt文件,但任何目錄的開始/usr/src/linux*/usr/inclu*內容。

+0

啊哈,那就做到了!謝謝! (如果只有每個問題都很簡單。) – Amy