Возможно, эти файлы имеют имена, содержащие пробел.
Простое правило программирования оболочки: Всегда используйте двойные кавычки вокруг переменной и управляйте заменами (если Вы не знаете, почему необходимо пропустить их). Так:
for i in *; do mv "$i" "$(echo "$i" | sed 's/.flac//g')"; done
В то время как Вы в нем, существует несколько вещей, Вы могли добиться большего успеха в той команде, даже если они не источник Вашей проблемы. Необходимо выполнить команду только на файлах, на которые она, как предполагается, влияет, не каждый файл в текущем каталоге. sed regexp .flac
мог соответствовать чему-то другому, чем расширение. Команда может также перестать работать, если у Вас есть имя файла, которое начинается с a -
или это содержит обратную косую черту (с некоторыми версиями echo
).
for i in *.flac.mp3; do mv -- "$i" "$(echo "$i" | sed 's/\.flac\.mp3$/\.mp3/')"; done
Но на самом деле Вы не должны беспокоиться sed здесь, существует конструкция оболочки для удаления суффикса из строки.
for i in *.flac.mp3; do mv -- "$i" "${i%.flac.mp3}.mp3"; done
--
гарантирует это даже если $i
начинается с a -
, это не будет интерпретироваться как опция. Альтернативный метод должен гарантировать это $i
никогда не начинается -
, например, путем обеспечения, что все имена файла прямого доступа снабжаются префиксом ./
(который не имеет никакого эффекта на то, какой файл определяется с тех пор .
текущий каталог).
поскольку я в ./*.flac.mp3; сделайте mv "$i" "${i%.flac.mp3}.mp3";готово
Существует много инструментов для автоматизации переименований файла; обзор переименовывает здесь для нескольких идей. Например, если Ваша оболочка является zsh:
autoload zmv # goes into your .zshrc
zmv '(*).flac.mp3' '$1.mp3'
Не уверенный, если бы это работало бы хорошо на Ваш файл 400 МБ, но здесь является некоторым CLI лайнеры, которые добились бы цели.
Если Вы ищете записи для определенной даты, grep -c
может, вероятно, сделать то, в чем Вы нуждаетесь.
Иначе Вы могли, вероятно, использовать sed
:
sed -n '/date1/,/date2/p' filename
Например, с входным файлом "тест":
Day 0: foo
Day 1: hello
Day 2: world
Day 3: blah
Вы могли работать
[me@mybox tmp]$ sed -n '/Day 1/,/Day 2/p' test
Day 1: hello
Day 2: world
Рассмотрите использование инструментов, таких как splunk, loglogic, logrhythm, graylog2.org (открытый исходный код)
cat
,zcat
, и т.д.... – zje 27.04.2012, 17:56