簡體   English   中英

bash使用“ find”命令並刪除用戶的模式(使用特殊參數)

[英]bash to use “find” command and delete the user's pattern(using special arguments)

如您所見,我寫了一個簡單的bash:

#!/bin/bash
if [ $# -ne 2 ]; then
   echo "Usage: ./rm.sh <global-path> <pattern>"
   exit 1
fi

for file in $(find $1 -name '$2')
do
   rm -f $file
done

當用戶在終端中寫入時:

./script.sh /tmp *~

該腳本不起作用...如何告訴腳本這樣的參數?

謝謝

您必須引用該參數以防止bash擴展模式,然后才能將其傳遞給find命令:

./script.sh /tmp '*~'

如果不想引用它,則必須首先關閉文件名生成:

set -f
./script.sh /tmp *~
set +f   # To turn file name generation back on

在腳本中,您需要在$2周圍使用雙引號,以便在將值傳遞給find之前將其擴展為給定的模式。 您還應該真正引用$1 ,以便任何目錄名,甚至包含空格的目錄名都可以作為參數傳遞。

find "$1" -name "$2"

暫無
暫無

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

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