Результаты труб, найденных в rm

Я попытался запустить

locate *.orig | xargs rm

, но он сказал No such file or directory

Я видел способы сделать это с помощью find, но locate возвращает полный путь к объекту поэтому должно быть возможно

9
задан 23 October 2010 в 00:35

45 ответов

Если имена файлов содержат пробелы, вы должны использовать

locate -0 $something | xargs -0 rm

или

locate $something | while read f; do rm "$f"; done

Кроме того, вы должны защитить *.orig кавычками, чтобы избежать расширения оболочки и пройти его найти нетронутым.

15
ответ дан 26 May 2018 в 00:51
  • 1
    Что вы подразумеваете под «расширением оболочки»? – soldier.moth 23 October 2010 в 01:58
  • 2
    +1 для вашего второго примера. Я всегда использую | while read, так как мой домашний каталог заполнен файлами с пробелами. – matpie 23 October 2010 в 02:35
  • 3
    @ Soldier.moth: если в текущей папке есть файлы, соответствующие шаблону *.orig, оболочка будет расширять шаблон до, скажем, file1.orig file2.orig ..., так что locate не увидит точную строку *.orig как должно. – enzotib 23 October 2010 в 10:39
  • 4
    @enzotib Отлично! Благодаря – somethingSomething 22 February 2015 в 00:51

Если имена файлов содержат пробелы, вы должны использовать

locate -0 $something | xargs -0 rm

или

locate $something | while read f; do rm "$f"; done

Кроме того, вы должны защитить *.orig кавычками, чтобы избежать расширения оболочки и пройти его найти нетронутым.

17
ответ дан 25 July 2018 в 23:02

Если имена файлов содержат пробелы, вы должны использовать

locate -0 $something | xargs -0 rm

или

locate $something | while read f; do rm "$f"; done

Кроме того, вы должны защитить *.orig кавычками, чтобы избежать расширения оболочки и пройти его найти нетронутым.

17
ответ дан 31 July 2018 в 11:04

Если имена файлов содержат пробелы, вы должны использовать

  locate -0 $ something |  xargs -0 rm  

или

  найти $ something |  при чтении f;  do rm "$ f";  done  

Кроме того, вы должны защитить *. orig кавычками, чтобы избежать расширения оболочки и передать его, чтобы найти нетронутый.

17
ответ дан 2 August 2018 в 04:23

Если имена файлов содержат пробелы, вы должны использовать

  locate -0 $ something |  xargs -0 rm  

или

  найти $ something |  при чтении f;  do rm "$ f";  done  

Кроме того, вы должны защитить *. orig кавычками, чтобы избежать расширения оболочки и передать его, чтобы найти нетронутый.

17
ответ дан 4 August 2018 в 20:55

Если имена файлов содержат пробелы, вы должны использовать

  locate -0 $ something |  xargs -0 rm  

или

  найти $ something |  при чтении f;  do rm "$ f";  done  

Кроме того, вы должны защитить *. orig кавычками, чтобы избежать расширения оболочки и передать его, чтобы найти нетронутый.

17
ответ дан 6 August 2018 в 04:28

Если имена файлов содержат пробелы, вы должны использовать

  locate -0 $ something |  xargs -0 rm  

или

  найти $ something |  при чтении f;  do rm "$ f";  done  

Кроме того, вы должны защитить *. orig кавычками, чтобы избежать расширения оболочки и передать его, чтобы найти нетронутый.

17
ответ дан 7 August 2018 в 22:35

Если имена файлов содержат пробелы, вы должны использовать

  locate -0 $ something |  xargs -0 rm  

или

  найти $ something |  при чтении f;  do rm "$ f";  done  

Кроме того, вы должны защитить *. orig кавычками, чтобы избежать расширения оболочки и передать его, чтобы найти нетронутый.

17
ответ дан 10 August 2018 в 10:42

Если имена файлов содержат пробелы, вы должны использовать

  locate -0 $ something |  xargs -0 rm  

или

  найти $ something |  при чтении f;  do rm "$ f";  done  

Кроме того, вы должны защитить *. orig кавычками, чтобы избежать расширения оболочки и передать его, чтобы найти нетронутый.

17
ответ дан 13 August 2018 в 17:16
  • 1
    Что вы подразумеваете под «расширением оболочки»? – soldier.moth 23 October 2010 в 01:58
  • 2
    +1 для вашего второго примера. Я всегда использую | прочитав , так как мой домашний каталог заполнен файлами с пробелами. – matpie 23 October 2010 в 02:35
  • 3
    @ Soldier.moth: если в текущей папке есть файлы, соответствующие шаблону *. Orig , оболочка будет расширять шаблон до, скажем, file1.orig file2.orig ... , так что locate не увидит точную строку *. orig как следует. – enzotib 23 October 2010 в 10:39
  • 4
    @enzotib Отлично! Благодаря – somethingSomething 22 February 2015 в 00:51

Это xargs не xarg

1
ответ дан 26 May 2018 в 00:51
  • 1
    Это то, что я имел в виду, это печатать вопрос из памяти спасибо. – soldier.moth 23 October 2010 в 00:35
  • 2
    О, хорошо. Это выглядело как ошибка, которую вы получили бы некорректную команду после | – maco 23 October 2010 в 00:45

Команда locate *.orig | xargs rm действительно работает, но то, что происходило, было то, что locate находил файлы *.orig в корзине мусора, а rm выплевывает ошибку No such file or directory при попытке удалить файлы в корзине .

0
ответ дан 26 May 2018 в 00:51
  • 1
    Вы должны добавить информацию как "комментарий" к исходному ответу, или вы можете отредактировать исходный ответ. Это не ответ на ваш вопрос. – enzotib 23 October 2010 в 10:57
  • 2
    Ответ на мой вопрос - причина, по которой я получал ошибку, потому что locate находил файлы * .orig в корзине мусора и rm не мог их удалить. Я принял ваш ответ и проголосовал за другие ответы, потому что они были хорошо написаны и могли помочь кому-то, кто приходит позже. – soldier.moth 23 October 2010 в 11:25

locate не выполняет globbing, но оболочка делает. Оболочка расширяет * .orig до того, что она находит в текущем каталоге, который соответствует * .orig.

Просто используйте

locate .orig

, и если это даст вам то, что вам нужно

locate .orig | xargs rm

, или, как сказал enzotib

locate -0 .orig | xargs -0 rm

, если у вас есть пробелы в именах файлов.

0
ответ дан 26 May 2018 в 00:51

Трюк: Сохраните все пути в файле tmp. затем, Loop на нем:

#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
    pth=$line
    rm "$pth" 
done < /tmp/tmp.txt

rm -rf /tmp/tmp.txt 
0
ответ дан 26 May 2018 в 00:51

Трюк: Сохраните все пути в файле tmp. затем, Loop на нем:

#!/bin/bash locate .orig /tmp/tmp.txt while read line do pth=$line rm "$pth" done < /tmp/tmp.txt rm -rf /tmp/tmp.txt
0
ответ дан 25 July 2018 в 23:02

Это xargs не xarg

1
ответ дан 25 July 2018 в 23:02
  • 1
    Это то, что я имел в виду, это печатать вопрос из памяти спасибо. – soldier.moth 23 October 2010 в 00:35
  • 2
    О, хорошо. Это выглядело как ошибка, которую вы получили бы некорректную команду после | – maco 23 October 2010 в 00:45

Команда locate *.orig | xargs rm действительно работает, но то, что происходило, было то, что locate находил файлы *.orig в корзине мусора, а rm выплевывает ошибку No such file or directory при попытке удалить файлы в корзине .

0
ответ дан 25 July 2018 в 23:02
  • 1
    Вы должны добавить информацию как "комментарий" к исходному ответу, или вы можете отредактировать исходный ответ. Это не ответ на ваш вопрос. – enzotib 23 October 2010 в 10:57
  • 2
    Ответ на мой вопрос - причина, по которой я получал ошибку, потому что locate находил файлы * .orig в корзине мусора и rm не мог их удалить. Я принял ваш ответ и проголосовал за другие ответы, потому что они были хорошо написаны и могли помочь кому-то, кто приходит позже. – soldier.moth 23 October 2010 в 11:25

locate не выполняет globbing, но оболочка делает. Оболочка расширяет * .orig до того, что она находит в текущем каталоге, который соответствует * .orig.

Просто используйте

locate .orig

, и если это даст вам то, что вам нужно

locate .orig | xargs rm

, или, как сказал enzotib

locate -0 .orig | xargs -0 rm

, если у вас есть пробелы в именах файлов.

0
ответ дан 25 July 2018 в 23:02

Трюк: Сохраните все пути в файле tmp. затем, Loop на нем:

#!/bin/bash locate .orig /tmp/tmp.txt while read line do pth=$line rm "$pth" done < /tmp/tmp.txt rm -rf /tmp/tmp.txt
0
ответ дан 31 July 2018 в 11:04

Это xargs не xarg

1
ответ дан 31 July 2018 в 11:04
  • 1
    Это то, что я имел в виду, это печатать вопрос из памяти спасибо. – soldier.moth 23 October 2010 в 00:35
  • 2
    О, хорошо. Это выглядело как ошибка, которую вы получили бы некорректную команду после | – maco 23 October 2010 в 00:45

Команда locate *.orig | xargs rm действительно работает, но то, что происходило, было то, что locate находил файлы *.orig в корзине мусора, а rm выплевывает ошибку No such file or directory при попытке удалить файлы в корзине .

0
ответ дан 31 July 2018 в 11:04
  • 1
    Вы должны добавить информацию как "комментарий" к исходному ответу, или вы можете отредактировать исходный ответ. Это не ответ на ваш вопрос. – enzotib 23 October 2010 в 10:57
  • 2
    Ответ на мой вопрос - причина, по которой я получал ошибку, потому что locate находил файлы * .orig в корзине мусора и rm не мог их удалить. Я принял ваш ответ и проголосовал за другие ответы, потому что они были хорошо написаны и могли помочь кому-то, кто приходит позже. – soldier.moth 23 October 2010 в 11:25

locate не выполняет globbing, но оболочка делает. Оболочка расширяет * .orig до того, что она находит в текущем каталоге, который соответствует * .orig.

Просто используйте

locate .orig

, и если это даст вам то, что вам нужно

locate .orig | xargs rm

, или, как сказал enzotib

locate -0 .orig | xargs -0 rm

, если у вас есть пробелы в именах файлов.

0
ответ дан 31 July 2018 в 11:04

Трюк: сохраните все пути в файле tmp. затем, Loop на нем:

  #! / bin / bash найти .orig /tmp/tmp.txt во время чтения строки do pth = $ line rm "$ pth" done & lt;  /tmp/tmp.txt rm -rf /tmp/tmp.txt  
0
ответ дан 2 August 2018 в 04:23

Это xargs not xarg

1
ответ дан 2 August 2018 в 04:23

Команда находит * .orig | xargs rm действительно работает, но то, что происходило, заключалось в том, что locate находил файлы *. orig в корзине мусора и rm spits (d4) Нет такого файла или каталога при попытке удалить файлы в корзине.

0
ответ дан 2 August 2018 в 04:23

locate не делает globbing, но оболочка делает. Оболочка расширяет * .orig до того, что она находит в текущем каталоге, который соответствует * .orig.

Просто используйте

  найдите .orig  

, и если это доставит вам то, что вам нужно

  locate .orig |  xargs rm  

или, как упоминалось enzotib

  locate -0 .orig |  xargs -0 rm  

, если у вас есть пробелы в именах файлов.

0
ответ дан 2 August 2018 в 04:23

Это xargs not xarg

1
ответ дан 4 August 2018 в 20:55

Команда находит * .orig | xargs rm действительно работает, но то, что происходило, заключалось в том, что locate находил файлы *. orig в корзине мусора и rm spits (d4) Нет такого файла или каталога при попытке удалить файлы в корзине.

0
ответ дан 4 August 2018 в 20:55

locate не делает globbing, но оболочка делает. Оболочка расширяет * .orig до того, что она находит в текущем каталоге, который соответствует * .orig.

Просто используйте

  найдите .orig  

, и если это доставит вам то, что вам нужно

  locate .orig |  xargs rm  

или, как упоминалось enzotib

  locate -0 .orig |  xargs -0 rm  

, если у вас есть пробелы в именах файлов.

0
ответ дан 4 August 2018 в 20:55

Трюк: сохраните все пути в файле tmp. затем, Loop на нем:

  #! / bin / bash найти .orig /tmp/tmp.txt во время чтения строки do pth = $ line rm "$ pth" done & lt;  /tmp/tmp.txt rm -rf /tmp/tmp.txt  
0
ответ дан 4 August 2018 в 20:55

Команда находит * .orig | xargs rm действительно работает, но то, что происходило, заключалось в том, что locate находил файлы *. orig в корзине мусора и rm spits (d4) Нет такого файла или каталога при попытке удалить файлы в корзине.

0
ответ дан 6 August 2018 в 04:28

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

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