переименование файла в bash из информационного файла

Использование comm, поскольку файлы отсортированы:

comm -3 file1 file2 > result.txt

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

Если файлы не отсортированы, сначала отсортируйте их. Предполагая, что вы используете bash, ksh или zsh, а не простой sh:

comm -3 <(sort file1) <(sort file2) > result.txt
0
16.05.2017, 19:23
2 ответа
$ while read -r c1 c2 c3; do echo mv "$c3" "$c2"; done < info.txt
mv ERR315336_1.fastq.gz placenta_6c_ERR315336_1.fastq.gz
mv ERR315336_2.fastq.gz placenta_6c_ERR315336_2.fastq.gz
mv ERR315337_1.fastq.gz thyroid_5b_ERR315337_1.fastq.gz
mv ERR315337_2.fastq.gz thyroid_5b_ERR315337_2.fastq.gz
  • Прочитайте файл info.txt строку за строкой и сохраните 3 поля (предполагается разделение пробелом/табуляцией)
  • echo для пробного запуска, удалите, как только все будет в порядке
  • Дополнительная литература: http://mywiki.wooledge.org/BashFAQ/001
2
28.01.2020, 02:19

авк -ишлы:

cd directory-with-files
awk '{system("echo mv " $3 " " $2)}' < /path/to/info.txt

баш -эдлы:

cd directory-with-files
while read -r junk new old
do
  echo mv "$old" "$new"
done < /path/to/info.txt

Удалите эхо, когда оно выглядит хорошо.

Это не приводит к ошибкам -при проверке наличия пробелов в именах файлов или меток -в кавычках в именах файлов.

2
28.01.2020, 02:19

Теги

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