ls | grep 'NC022.*nii'
Показывает мне все файлы, содержащие NC022
и nii
.
Но когда я пытаюсь переместить их использование
mv NC022.*nii NC022/
Это жалуется это
mv: cannot stat 'NC022.*nii': No such file or directory
Это происходит также, если я пробую это (как замечено в других ответах).
mv -t NC022 'ls | grep 'NC022.*nii''
Я изо всех сил пытаюсь видеть, какова ошибка, поскольку у меня есть чувство того, что сделал точно то же самое многочисленные времена без ошибок...
Как я могу переместить все файлы, соответствующие шаблону в папку?
Пример частичного ls произвел для первой команды:
NC022_Background1_Raw import W325.39 L290.nii
NC022_Background2_Copy (2) of Raw import W325.39 L290.nii
NC022_Background3_Raw import W1103.50 L551.nii
NC022_Mask1_mask_air.nii
Вы путаете синтаксис регулярного выражения (как используется grep
) с шаблонами шарика (как используется оболочкой).
В regex, .
средства любой отдельный символ, и *
нуль средств или больше повторений. Так grep 'NC022.*nii'
соответствия NC022
кому: nii
с чем-либо (включая ничто) промежуточный.
Напротив, .
является литеральным в шариках оболочки, в то время как *
самостоятельно нуль средств или больше символов. Так NC022.*nii
соответствия NC022.
кому: nii
с чем-либо (включая ничто) промежуточный.
В частности, при попытке соответствовать всем файлам a .nii
расширение, .
находится в неправильном месте: Вы хотели бы NC022*.nii
т.е.
mv NC022*.nii NC022/