KSH: CP только на основе размера файла

Вы не можете объединить их с bash (или POSIXly), необходимо сделать это на двух шагах.

i=${x#*/}; i=${i%%/*}

Это портативно к любой оболочке POSIX. Если бы Вам нужна мобильность к Оболочке Bourne (но почему Вы отметили бы свой вопрос / удар затем?) также в случае, если Вы портируете на Солярис и вынуждены использовать /bin/sh вместо стандарта sh там или портирование на 20-летние системы), Вы могли использовать этот подход (который будет работать также с оболочками POSIX):

IFS=/; set -f
set x $x
i=$3

(выше один из очень редких случаев, где имеет смысл уезжать, переменная закрыла кавычки).

Только для справки, с zsh:

print -rl -- x86-headers/*/C/populate.sh(:h:h:t)

(хвост головы главы файла).

Или для Вашего python подход:

x=elf/C/populate.sh
i=${${(s:/:)x}[2]}
2
27.11.2013, 11:08
1 ответ

Можно сделать это в двух командах:

find A -name "*.log" -size -10485760c -exec cp {} B/ +
find A -name "*.log" -size +10485760c -exec cp -i {} B/ +

Первые файлы находок, меньшие, чем 10485760 и копии без разбора. Вторые файлы находок, больше, чем 10485760 и копии в интерактивном режиме, запрашивая каждую копию.

Поместите их в сценарий оболочки или функцию так, чтобы можно было выполнить ее с единственной командой, если Вам нравится.

3
27.01.2020, 22:06
  • 1
    На самом деле я попробовал: найти. - имя "*.log" - размер +10485760c - исполнительное CP-i {} $3/2 / \;-> разве работают, копия не зарегистрировала с размером выше, чем 10 МБ, без спроса. Изучающих страницу справочника, я предполагаю, что имею, забывают что-то здесь –  user1058398 21.11.2013, 14:47

Теги

Похожие вопросы