Фактическая ошибка из tar
в последней строке (, которая, я думаю, была вашим основным вопросом ), связана с тем, что вы не указали фактическое действие. f
указывает, что следует имя файла. v
подробно говорит о том, что нужно что-то сделать. z
говорит, что файл сжат (и в большинстве версий tar
является избыточным ).
Думаю, вы хотелиt
-перечислить файлы. В этом случае вам понадобится:
tar -tvzf home-10-07-2017.tar.gz
Напишите функцию оболочки или сценарий. Единственная проблема заключается в том, насколько вы заботитесь о крайних случаях. Если тебе все равно, то
#!/bin/bash
args=()
while (($# > 0))
do
case "$1" in
("-mn") args=("${args[@]}" "-mindepth") ;;
("-mx") args=("${args[@]}" "-maxdepth") ;;
(*) args=("${args[@]}" "$1") ;;
esac
shift
done
exec find "${args[@]}"
Если вам не все равно, используйте
("-mn") args=("${args[@]}" "-mindepth" "$2") ; shift ;;
и добавьте аналогичные случаи для всех других параметров поиска, которые принимают параметр, поэтому вы не конвертируете
find / -name -mn -print
в
find / -name -mindepth -print
Не называйте этот скрипт find
, возможно, fnd
, так как он использует более короткие параметры, чем find, или myfind
. Можно заставить его работать, если вы назовете его find, но, как упоминалось в комментариях, вы не можете изменить поведение стандартных программ.