Вам нужно внести некоторые изменения во второй скрипт. Вставьте отсутствующий -name
, удалите одинарные кавычки и используйте установите -f , чтобы избежать расширения звездочки. Либо в начале скрипта, либо (, как показано )в подоболочке :
<(set -f; find $find_args)
измените эхо на printf и сделайте присваивание как files+=("$file")
, чтобы фактически иметь массив значений. То, что у вас есть, только строит строку.
#!/bin/bash
find_args="-type f -name *.c -print0"
while IFS= read -r -d '' file; do
files+=("$file")
done < <(set -f; find $find_args)
printf '<%s> ' "${files[@]}"; echo
Чтобы скопировать обычные файлы (, исключая файлы со скрытыми точками ), в ваш текущий каталог, начиная с UnityFS5
, вы можете использовать:
for file in *; do
if [ -f "$file" ] && [ "$(head -c 8 "$file")" = "UnityFS5" ]; then
cp "$file" /path/to/destination/
fi
done