однострочная команда для переименования файла с использованием вывода другой команды

однострочная команда для переименования файла с использованием вывода другой команды

У меня есть команда, которая извлекает слово из файла.

Я хочу переименовать этот файл, используя извлеченное из него слово.

Команда, которую я использую для извлечения слова, которое я позже буду использовать для переименованияимя_файла.txt, заключается в следующем:

$ grep -e "some words" -e "other words" filename.txt | awk '{print $1}' 

имя_файла.txtпример содержания:

dasdadas
asdasda
asdas
matched some words
asdas
asda

Ожидаемый результат:имя_файла.txtбудет переименован всовпало.txt.

Я надеюсь, что это можно сделать с помощью однострочной команды.

Это не сработает, но может быть что-то вроде:

mv filename.txt $(grep -e "some words" -e "other words" filename.txt | awk '{print $1}').txt Note: Im certain that there will only be one match with thegrep`. Спасибо.

решение1

#!/bin/bash 
old_file_name=$1  # take an argument for the file you want to muck with
new_file_name=$(grep -e "some words" -e "other words" "${old_file_name}" | awk '{print $1}' | head -n 1).txt 
mv "$old_file_name" "$new_file_name"

решение2

Использование grepи awkв одном конвейере редко бывает хорошей идеей, поскольку awkможет делать все, что grepугодно:

awk '/(some|other) words/ {print $1}' filename.txt | xargs -I{} mv filename.txt {}.txt

Связанный контент