Как я могу переместить все файлы, соответствующие шаблону в папку?

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
1
задан 25 April 2018 в 01:36

1 ответ

Вы путаете синтаксис регулярного выражения (как используется grep) с шаблонами шарика (как используется оболочкой).

В regex, . средства любой отдельный символ, и * нуль средств или больше повторений. Так grep 'NC022.*nii' соответствия NC022 кому: nii с чем-либо (включая ничто) промежуточный.

Напротив, . является литеральным в шариках оболочки, в то время как * самостоятельно нуль средств или больше символов. Так NC022.*nii соответствия NC022. кому: nii с чем-либо (включая ничто) промежуточный.

В частности, при попытке соответствовать всем файлам a .nii расширение, . находится в неправильном месте: Вы хотели бы NC022*.nii т.е.

mv NC022*.nii NC022/
4
ответ дан 3 December 2019 в 06:52

Другие вопросы по тегам:

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