С zsh
:
mkdir -p -- *.doc(:r)
Или:
for f (*.doc) {
mkdir -p -- $f:r &&
mv -- $f $f:r/
}
Эквивалент bash
(хотя он также будет работать во всех оболочках POSIX и zsh
):
for f in *.doc; do
mkdir -p -- "${f%.*}" &&
mv -- "$f" "${f%.*}/"
done
(обратите внимание, что он исключает скрытые файлы).
На этот вопрос ответил пользователь "emilrn", который по какой-то причине был удалён. Тем не менее, их ответ работал отлично.
Мне сказали запустить обе эти команды:
cat LoginExcInternal.txt | grep OpenFin >> test.txt
cat LoginExcInternal.txt | grep Chrome >> test.txt
Спасибо, Эмильрн!
Ваша команда
grep OpenFin LoginExcInternal.txt | grep Chrome LoginExcInternal.txt > test.txt
будет создавать только те строки из исходных данных, которые содержат строку Chrome
в любом месте строки. Это связано с тем, что результат первого grep
в конвейере вообще не будет обрабатываться правой стороной конвейера (, он будет просто отброшен ).
grep
при указании имени файла для чтения не будет обрабатывать стандартный входной поток. Именно в стандартный поток ввода поступает результат первого grep
.
sort -k2r LoginExcInternal.txt >test.txt
Вы хотите, чтобы строки с Chrome
во втором столбце шли после строк, содержащих OpenFin
в том же столбце. Вышеупомянутое делает это посредством сортировки исходных данных во втором столбце в обратном лексикографическом порядке.
Флаг -k2r
для sort
указывает утилите сортировать данные во втором столбце (и далее, если столбцов больше двух ), в обратном порядке (иr
). Если две строки имеют одинаковое значение во втором столбце, то в качестве ключа сортировки будет использоваться вся строка.
Строки с любыми другими значениями во втором столбце будут отсортированы с остальными строками и также будут частью вывода.
Если вы заботитесь об исходном порядке данных и не хотите его менять, а также предполагаете, что вы хотите извлечь только строки с этими двумя значениями во втором столбце (и без других значений )затем сделайте это в два этапа:
awk -v value='OpenFin' '$2 == value' LoginExcInternal.txt >test.txt
awk -v value='Chrome' '$2 == value' LoginExcInternal.txt >>test.txt
Это дважды применяет один и тот же код awk
к исходным данным с разными значениями переменной value
. Код выполняет сравнение строк во втором столбце (только )и печатает строки, имеющие указанное значение. Первый запуск скрипта awk
выполняет значения OpenFin
, а второй добавляет к этому строки Chrome
.
Это позволяет избежать использования первого столбца при сравнении данных.что было бы проблемой, если бы какое-либо из значений первого столбца оказалось Chrome
или OpenFin
. Кроме того, поскольку код awk
использует сравнение строк, он избегает вывода строк, второй столбец которых может содержать одну из строк в виде подстроки .