Вы можете попробовать запустить ubuntu без его установки и разделить так, как вам нравится, с lvm. Затем запустите установщик и выберите для него тома lvm. Но вам следует знать, что установка lvm на ubutu 18.04 может значительно замедлить время загрузки. Вы не должны разделять usr и корневой раздел на управляемые системой os.
find и sed являются вашим оружием выбора:
find /mydat/ -exec sed '1i 50' {} \;
Это будет придерживаться 50, за которым следует новая строка в начале файла.
] Альтернативно, если вам не нужны рекурсии или сложные селекторы для find, вы можете полностью удалить find:
sed '1i 50' *
find и sed являются вашим оружием выбора:
find /mydat/ -exec sed '1i 50' {} \;
Это будет придерживаться 50, за которым следует новая строка в начале файла.
] Альтернативно, если вам не нужны рекурсии или сложные селекторы для find, вы можете полностью удалить find:
sed '1i 50' *
find и sed являются вашим оружием выбора:
find /mydat/ -exec sed '1i 50' {} \;
Это будет придерживаться 50, за которым следует новая строка в начале файла.
] Альтернативно, если вам не нужны рекурсии или сложные селекторы для find, вы можете полностью удалить find:
sed '1i 50' *
find и sed являются вашим оружием выбора:
find /mydat/ -exec sed '1i 50' {} \;
Это будет придерживаться 50, за которым следует новая строка в начале файла.
] Альтернативно, если вам не нужны рекурсии или сложные селекторы для find, вы можете полностью удалить find:
sed '1i 50' *
find и sed являются вашим оружием выбора:
find /mydat/ -exec sed '1i 50' {} \;
Это будет придерживаться 50, за которым следует новая строка в начале файла.
] Альтернативно, если вам не нужны рекурсии или сложные селекторы для find, вы можете полностью удалить find:
sed '1i 50' *
find
и sed
- ваше оружие выбора:
find / mydat / -exec sed '1i 50' {} \ ;
Это будет придерживаться 50
, за которым следует новая строка в начале файла.
Альтернативно, если вам не нужна рекурсия или сложные селекторы для находят
, вы можете полностью удалить find
:
sed '1i 50' *
find
и sed
- ваше оружие выбора:
find / mydat / -exec sed '1i 50' {} \ ;
Это будет придерживаться 50
, за которым следует новая строка в начале файла.
Альтернативно, если вам не нужна рекурсия или сложные селекторы для находят
, вы можете полностью удалить find
:
sed '1i 50' *
find
и sed
- ваше оружие выбора:
find / mydat / -exec sed '1i 50' {} \ ;
Это будет придерживаться 50
, за которым следует новая строка в начале файла.
Альтернативно, если вам не нужна рекурсия или сложные селекторы для находят
, вы можете полностью удалить find
:
sed '1i 50' *
find
и sed
- ваше оружие выбора:
find / mydat / -exec sed '1i 50' {} \ ;
Это будет придерживаться 50
, за которым следует новая строка в начале файла.
Альтернативно, если вам не нужна рекурсия или сложные селекторы для находят
, вы можете полностью удалить find
:
sed '1i 50' *
find
более мощный, но вам может и не понадобиться. Я добавлю, что обе версии несколько проще, чем все эти запутанные петли bash.
– Oli♦
2 November 2010 в 23:22
Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, с помощью ed:
#!/bin/bash
for file in /mydata/*.txt; do
printf '%s\n' 0a 50 . w | ed -s "$file"
done
Это будет обрабатывать все виды нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих [ f4] -loops с ls в ответах, данных до сих пор.
Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id=howto : edit-ed
Для того, чтобы справиться с bash, я настоятельно рекомендую прочитать http://bash-hackers.org/wiki/doku.php?id=howto:edit-ed
По существу вам нужно перебирать каждый текстовый файл в каталоге, а затем добавлять в начало маленькую строку. Это не сложно, если вы разделите его на два шага.
Чтобы добавить строку в начало файла, формат будет таким:
echo "50 $( cat file.txt )" > file.txt
Если вы получаете cannot overwrite existing file, вам нужно отключить noclobber
set +o noclobber
Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "${FILE}"
done
Если это выведет все файлы, которые вы хотите правильно изменить, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "50 $( cat ${FILE} )" > "${FILE}"
done
И если вы хотите, чтобы это было сделано в одной строке:
for FILE in $( ls /mydata/ | grep txt$ ) ; do echo "50 $( cat ${FILE} )" > "${FILE}"; done
Если вы хотите, чтобы 50 в своей собственной строке, используйте printf вместе с \n вместо эха, как показано ниже.
for FILE in $( ls /mydata/ | grep txt$ ) ; do printf "50\n$( cat ${FILE} )" > "${FILE}"; done
С тех пор как вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала об обработке текстовых файлов.
Сложно добавить текст в конец файлов. Для BASH: echo 50 >> file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: for $FILE in 'ls' do echo 50 >> $FILE; done; for $FILE in * do echo 50 >> $FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 до конца. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал.
#!/bin/bash
echo "Adding 50 to each file in current directory."
for $FILE in *
do
[[ -f "$i" ]] || continue
echo "50" >> tmp
cat "$FILE" >> tmp
mv tmp "$FILE"
done
Это должно сработать, но запустите его в тестовом каталоге перед чем-то важным.
Edit: Обновлен скрипт как в комментарии Махеша
С тех пор как вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала об обработке текстовых файлов.
Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, с помощью ed:
#!/bin/bash
for file in /mydata/*.txt; do
printf '%s\n' 0a 50 . w | ed -s "$file"
done
Это будет обрабатывать все виды нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих for -loops с ls в ответах, данных до сих пор.
Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id=howto : edit-ed
Для того, чтобы справиться с bash, я настоятельно рекомендую прочитать http://bash-hackers.org/wiki/doku.php?id=howto:edit-ed
Сложно добавить текст в конец файлов. Для BASH: echo 50 >> file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: for $FILE in 'ls' do echo 50 >> $FILE; done; for $FILE in * do echo 50 >> $FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 до конца. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал.
#!/bin/bash
echo "Adding 50 to each file in current directory."
for $FILE in *
do
[[ -f "$i" ]] || continue
echo "50" >> tmp
cat "$FILE" >> tmp
mv tmp "$FILE"
done
Это должно сработать, но запустите его в тестовом каталоге перед чем-то важным.
Edit: Обновлен скрипт как в комментарии Махеша
По существу вам нужно перебирать каждый текстовый файл в каталоге, а затем добавлять в начало маленькую строку. Это не сложно, если вы разделите его на два шага.
Чтобы добавить строку в начало файла, формат будет таким:
echo "50 $( cat file.txt )" > file.txt
Если вы получаете cannot overwrite existing file, вам нужно отключить noclobber
set +o noclobber
Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "${FILE}"
done
Если это выведет все файлы, которые вы хотите правильно изменить, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "50 $( cat ${FILE} )" > "${FILE}"
done
И если вы хотите, чтобы это было сделано в одной строке:
for FILE in $( ls /mydata/ | grep txt$ ) ; do echo "50 $( cat ${FILE} )" > "${FILE}"; done
Если вы хотите, чтобы 50 в своей собственной строке, используйте printf вместе с \n вместо эха, как показано ниже.
for FILE in $( ls /mydata/ | grep txt$ ) ; do printf "50\n$( cat ${FILE} )" > "${FILE}"; done
С тех пор как вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала об обработке текстовых файлов.
Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, с помощью ed:
#!/bin/bash
for file in /mydata/*.txt; do
printf '%s\n' 0a 50 . w | ed -s "$file"
done
Это будет обрабатывать все виды нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих for -loops с ls в ответах, данных до сих пор.
Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id=howto : edit-ed
Для того, чтобы справиться с bash, я настоятельно рекомендую прочитать http://bash-hackers.org/wiki/doku.php?id=howto:edit-ed
Сложно добавить текст в конец файлов. Для BASH: echo 50 >> file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: for $FILE in 'ls' do echo 50 >> $FILE; done; for $FILE in * do echo 50 >> $FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 до конца. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал.
#!/bin/bash
echo "Adding 50 to each file in current directory."
for $FILE in *
do
[[ -f "$i" ]] || continue
echo "50" >> tmp
cat "$FILE" >> tmp
mv tmp "$FILE"
done
Это должно сработать, но запустите его в тестовом каталоге перед чем-то важным.
Edit: Обновлен скрипт как в комментарии Махеша
По существу вам нужно перебирать каждый текстовый файл в каталоге, а затем добавлять в начало маленькую строку. Это не сложно, если вы разделите его на два шага.
Чтобы добавить строку в начало файла, формат будет таким:
echo "50 $( cat file.txt )" > file.txt
Если вы получаете cannot overwrite existing file, вам нужно отключить noclobber
set +o noclobber
Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "${FILE}"
done
Если это выведет все файлы, которые вы хотите правильно изменить, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "50 $( cat ${FILE} )" > "${FILE}"
done
И если вы хотите, чтобы это было сделано в одной строке:
for FILE in $( ls /mydata/ | grep txt$ ) ; do echo "50 $( cat ${FILE} )" > "${FILE}"; done
Если вы хотите, чтобы 50 в своей собственной строке, используйте printf вместе с \n вместо эха, как показано ниже.
for FILE in $( ls /mydata/ | grep txt$ ) ; do printf "50\n$( cat ${FILE} )" > "${FILE}"; done
С тех пор как вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала об обработке текстовых файлов.
Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, с помощью ed:
#!/bin/bash
for file in /mydata/*.txt; do
printf '%s\n' 0a 50 . w | ed -s "$file"
done
Это будет обрабатывать все виды нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих for -loops с ls в ответах, данных до сих пор.
Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id=howto : edit-ed
Для того, чтобы справиться с bash, я настоятельно рекомендую прочитать http://bash-hackers.org/wiki/doku.php?id=howto:edit-ed
Сложно добавить текст в конец файлов. Для BASH: echo 50 >> file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: for $FILE in 'ls' do echo 50 >> $FILE; done; for $FILE in * do echo 50 >> $FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 до конца. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал.
#!/bin/bash
echo "Adding 50 to each file in current directory."
for $FILE in *
do
[[ -f "$i" ]] || continue
echo "50" >> tmp
cat "$FILE" >> tmp
mv tmp "$FILE"
done
Это должно сработать, но запустите его в тестовом каталоге перед чем-то важным.
Edit: Обновлен скрипт как в комментарии Махеша
По существу вам нужно перебирать каждый текстовый файл в каталоге, а затем добавлять в начало маленькую строку. Это не сложно, если вы разделите его на два шага.
Чтобы добавить строку в начало файла, формат будет таким:
echo "50 $( cat file.txt )" > file.txt
Если вы получаете cannot overwrite existing file, вам нужно отключить noclobber
set +o noclobber
Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "${FILE}"
done
Если это выведет все файлы, которые вы хотите правильно изменить, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "50 $( cat ${FILE} )" > "${FILE}"
done
И если вы хотите, чтобы это было сделано в одной строке:
for FILE in $( ls /mydata/ | grep txt$ ) ; do echo "50 $( cat ${FILE} )" > "${FILE}"; done
Если вы хотите, чтобы 50 в своей собственной строке, используйте printf вместе с \n вместо эха, как показано ниже.
for FILE in $( ls /mydata/ | grep txt$ ) ; do printf "50\n$( cat ${FILE} )" > "${FILE}"; done
С тех пор как вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала об обработке текстовых файлов.
Чтобы отредактировать файл, вам нужен редактор. ed и ex - примеры командных редакторов, которые полезны для редактирования файлов из сценария. Вот пример, вставляющий строку в каждый файл с расширением .txt в / mydata, с помощью ed:
#!/bin/bash
for file in /mydata/*.txt; do
printf '%s\n' 0a 50 . w | ed -s "$file"
done
Это будет обрабатывать все виды нечетных символов в именах файлов тоже, в отличие от всех примеров, использующих for -loops с ls в ответах, данных до сих пор.
Вот ссылка, описывающая, как использовать ed: http://bash-hackers.org/wiki/doku.php?id=howto : edit-ed
Для того, чтобы справиться с bash, я настоятельно рекомендую прочитать http://bash-hackers.org/wiki/doku.php?id=howto:edit-ed
Сложно добавить текст в конец файлов. Для BASH: echo 50 >> file.txt добавит 50 в конец файла file.txt. Оберните это в цикле for так: for $FILE in 'ls' do echo 50 >> $FILE; done; for $FILE in * do echo 50 >> $FILE; done; будет перебирать все файлы в текущем каталоге, добавляя 50 до конца. Обратите внимание, что одиночные кавычки на самом деле `, но это индикатор для разметки кода здесь ... blech. Чтобы добавить его в начало каждого файла, создайте в него временный файл и эхо 50, а затем повторите его содержимое. Затем переименуйте файл, чтобы перезаписать оригинал.
#!/bin/bash
echo "Adding 50 to each file in current directory."
for $FILE in *
do
[[ -f "$i" ]] || continue
echo "50" >> tmp
cat "$FILE" >> tmp
mv tmp "$FILE"
done
Это должно сработать, но запустите его в тестовом каталоге перед чем-то важным.
Edit: Обновлен скрипт как в комментарии Махеша
По существу вам нужно перебирать каждый текстовый файл в каталоге, а затем добавлять в начало маленькую строку. Это не сложно, если вы разделите его на два шага.
Чтобы добавить строку в начало файла, формат будет таким:
echo "50 $( cat file.txt )" > file.txt
Если вы получаете cannot overwrite existing file, вам нужно отключить noclobber
set +o noclobber
Теперь вам просто нужно отбросить это в цикле, который прокручивает файлы, которые вы хотите изменить.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "${FILE}"
done
Если это выведет все файлы, которые вы хотите правильно изменить, добавьте команду для изменения файлов (как показано ниже). Если нет, измените инструкцию grep до тех пор, пока она не будет соответствовать тому, что вам нужно.
for FILE in $( ls /mydata/ | grep txt$ ) ; do
echo "50 $( cat ${FILE} )" > "${FILE}"
done
И если вы хотите, чтобы это было сделано в одной строке:
for FILE in $( ls /mydata/ | grep txt$ ) ; do echo "50 $( cat ${FILE} )" > "${FILE}"; done
Если вы хотите, чтобы 50 в своей собственной строке, используйте printf вместе с \n вместо эха, как показано ниже.
for FILE in $( ls /mydata/ | grep txt$ ) ; do printf "50\n$( cat ${FILE} )" > "${FILE}"; done
Поскольку вы спросили, commandlinefu.com перечисляет кучу команд и трюков для использования в оболочке, и в нем много материала о манипуляциях с текстовыми файлами.