배열에 선언되지 않은 파일을 가져오려면 find 명령을 사용해야 합니다.
# ALLOWED extensions
ext_allowed=("*.cs" "*.csproj" "*.sln" "*.json")
combined=""
for ext in "${ext_allowed[@]}"; do
combined="$combined -not -name \"$ext\""
done
# This doesn't work :(
find $location $combined -not -type d
# This does work, but it looks the same??
find $location -not -name "*.cs" -not -name "*.csproj" -not -name "*.json" -not -name "*.sln" -not -type d
변수 위치는 단순히 파일의 위치를 보유합니다. -o 옵션도 사용해 보았지만 역시 작동하지 않습니다.
누구든지 나를 도와줄 수 있나요? 감사해요
답변1
문자열을 만드는 대신 combined
배열로 만듭니다.
for ext in "${ext_allowed[@]}"; do
combined+=($ext)
done
그런 다음 매개변수 확장을 사용해야 합니다. (바라보다https://wiki.bash-hackers.org/syntax/pe#search_and_replace)
find "$location" "${combined[@]/#/'-not -name '}" -not -type d