Tag: xargs

find:路径必须在表达式之前:)xargs

mkdir dregsfolder find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -not \( -type d -or -iname “*.jpg” -or -iname “*.gif” -or -iname “*.docx” \)xargs -0 –no-run-if-empty mv /home/tony/Desktop/dregsfolder 当我运行该代码时; 我被告知 find: paths must precede expression: )xargs 我很困惑,因为我认为已经使用/home/tony/Desktop/unsorted_files指定了路径。 我更加困惑,因为在Unix和Linux Stack Exchange上的这个问题中 ,我们有一个示例xargs将文件复制到名为play的目录: find /tmp/ -ctime -1 -name “x*” | xargs -I ‘{}’ mv ‘{}’ ~/play/ 而在这里,似乎是目标目录,即播放; 已经在xargs之后指定了…… 我想要澄清与xargs相关的精确机制及其中相关的细微差别,用于解析目录中不仅仅是一个文件(如上一个问题中所述),而且,它在unix世界中的广泛使用与参数。

find与-exec和xargs有什么区别?

试图学习Bash脚本我想在当前目录下的所有满足特定条件的文件上执行一些命令。 运用 find -name *.flac 具体来说,我想将.flac转换为.mp3 。 我可以找到所有文件。 但是,我没有看到使用-exec选项执行命令和使用xargs的区别。 例如 find -name *.flac | xargs -i ffmpeg -i {} {}.mp3 相比 find -name *.flac -exec ffmpeg -i {} {}.mp3 \; 有人可以指出差异吗? 什么是更好的praticice? 有什么优点/缺点? 另外:如果我想同时删除原始文件,我将如何在上面的代码中添加第二个命令?

“-bash:/ usr / bin / rename:参数列表太长”

我想通过添加子目录的名称来重命名每个子目录中的文件。 通过添加父文件夹名称来重命名文件的答案,我试过: rename ‘s/(.*)\//$1\/$1_/’ */* 但是对于许多子目录,它不起作用。 我有13,000个子目录,每个目录包含大约300个文件。 我明白了 -bash: /usr/bin/rename: Argument list too long 我试过了: ls | xargs rename ‘s/(.*)\//$1\/$1_/’ */* find . -maxdepth 1 -type f -print0 | xargs rename ‘s/(.*)\//$1\/$1_/’ */* 两者都给出了同样的错误: -bash: /usr/bin/xargs: Argument list too long 编辑 xargs -L rename ‘s/(.*)\//$1\/$1_/’ */* xargs -L1 rename ‘s/(.*)\//$1\/$1_/’ */* 同样的错误: -bash: /usr/bin/xargs: Argument […]

如何使用dbus-monitor结合xargs解决“无与伦比的双引号”错误?

要在Linux(Ubuntu)上拦截( notify-osd )通知,我使用下面的dbus-monitor脚本。 随后,该脚本运行另一个脚本( /opt/nonotifs/nonotifs/silent ),并将截获的通知作为参数,以便进一步处理: #!/bin/bash dbus-monitor “interface=’org.freedesktop.Notifications'” | \ grep –line-buffered “string” | \ grep –line-buffered -e method -e “:” -e ‘””‘ -e urgency -e notify -v | \ grep –line-buffered ‘.*(?=string)|(?<=string).*' -oPi | \ grep –line-buffered -v '^\s*$' | \ xargs -I '{}' /opt/nonotifs/nonotifs/silent {} 除了 hplip通知之外 ,这完美无瑕。 从终端运行时,上面的脚本显示: xargs: unmatched double […]

管道查找-name到xargs会导致文件名中没有传递给命令的空格

通常要删除文件名中包含空格的文件,您必须运行: $ rm “file name” 但如果我想删除多个文件,例如: $ find . -name “*.txt” | xargs rm 这不会删除包含空格的文件。