Попробуйте:
find "$TARGET_DIR//." \( -name . -o -prune \) -type d -exec sh -c '
for f do
f=${f%//.}
f=${f%"${f##*[!/]}"}
f=${f##*/}
printf "(DIR) %s\n" "${f:-/}"
done' sh {} +
Было бы проще для эквивалента -mindepth 1 -maxdepth 1
:
find "$TARGET_DIR//." \( -name . -o -prune \) -type d -exec sh -c '
for f do
printf "(DIR) %s\n" "${f##*/}"
done' sh {} +
Для второго:
find "$TARGET_DIR//." ! -name . -prune -type f -exec sh -c '
for f do
size=$(($(wc -c < "$f") +0)) || continue
printf %s "$size ${f##*/} "
file -b -- "$f"
done' sh {} +
Похоже, что вы изначально назвали файл C permute
; когда make
завершился неудачно, вы попытались выполнить его с помощью своей оболочки, что привело ко всем этим синтаксическим ошибкам (поскольку оболочка не знает, как выполнять код C).
Во втором случае вы нажимаете комментарий:
// В качестве первого аргумента необходимо указать длину (integer
// В противном случае он выйдет из строя и сгорит
потому что вы не предоставили программе первый (или какие-либо) аргументы. Попробуйте ./ permute.bin 10
.
В первом случае похоже, что вы сохранили код C как permute
, а затем попытался запустить
make CFLAGS=-O3 permute && time ./permute 5 >/dev/null
Поскольку нет Makefile
с целью для make
, он завершился без ошибок при печати информационного сообщения,
Ничего не должно быть сделано для "перестановки".
Поскольку make
не вернул код ошибки, была выполнена вторая часть этой команды ( time ./permute 5> / dev / null
). Поскольку permute
- это исходный код, а не исполняемый двоичный файл, он был интерпретирован как сценарий оболочки, в результате получился следующий результат:
./permute: line 3: //global: No such file or directory
./permute: line 4: const: command not found
./permute: line 5: char: command not found
./permute: line 7: syntax error near unexpected token `('
./permute: line 7: `void permute(int level) {'
Лучшими инструкциями было бы сохранить исходный код C в permute. c
, а затем выполните следующую команду, чтобы скомпилировать его (и связать с необходимыми файлами библиотеки):
gcc -O3 -o permute permute.c
Это создает пермутацию
как исполняемый двоичный файл, который может быть запущен, например:
./permute 2