小编qod*_*nja的帖子

如何将某种类型的所有文件移动(或复制)到 Unix 中的目录中?

我还不是很熟悉grep/find/awk/xargs相当的所有技巧。

我有一些匹配特定模式的文件,比如*.xxx. 这些文件位于某个目录中的随机位置。我怎样才能找到所有这些文件,并将它们移动到我在 Unix 上的主目录中的一个文件夹(可能还不存在)?

grep file-copy rename

24
推荐指数
2
解决办法
6万
查看次数

如何将所有文件移动(或复制)到具有相同文件名前缀的目录?

使用 Bash

因此,假设我将一堆文件随机放置在父目录中~/src,我想获取与某个后缀匹配的所有文件并将它们移动(或复制)到一个~/dist目录中。

为此,让我们假设所有文件名都具有以下命名约定:

<filename_prefix>.<filename_suffix>
Run Code Online (Sandbox Code Playgroud)

我发现这是一种快速获取特定文件filename_suffix并将它们放入 dist 文件夹的方法:

mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Run Code Online (Sandbox Code Playgroud)

现在更进一步......在这种情况下filename,我如何使用 find 的输出,并使用filename_prefix生成一个同名的目录,~/dist然后将具有该前缀的所有文件移动(或复制)到适当的目录中?

mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Run Code Online (Sandbox Code Playgroud)

本质上,我如何更改上述命令(或者可能使用另一个命令)来创建这样的结构

(输出)

~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
Run Code Online (Sandbox Code Playgroud)

从这样的目录树?

(输入)

~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
Run Code Online (Sandbox Code Playgroud)

find filenames file-copy directory-structure

9
推荐指数
1
解决办法
9680
查看次数

你如何用腻子/bash 显示 xterm 颜色?

Putty 有我想使用的“允许终端使用 xterm 256 色模式”,但我不知道如何使用。我一直在使用color.sh脚本来输出带有颜色的 echo 语句和命令,我想用 xterm 颜色做类似的事情。

#!/bin/bash
## Specify color to write in using arguments

function --help {
cat << EOF

ERROR: $0 requires a color argument.

USAGE: Changes the color of the text piped into it.

These color arguments are availabe:

    ARGUMENT    SHORTCUT
    white   ------  w
    red ------  r
    green   ------  g
    yellow  ------  y
    blue    ------  b
    violet  ------  v
    teal    ------  t

    bold    ------  bb

The "bold" argument will modify any color. …
Run Code Online (Sandbox Code Playgroud)

colors xterm putty

8
推荐指数
2
解决办法
6万
查看次数

以编程方式检测终端支持的 ANSI 转义码

我正在研究使用 ANSI 代码的 shell 脚本,发现由于某种原因,根据您的终端/操作系统支持不同的转义代码。

在某些情况下,我意外地得到了未解析的垃圾转储,我假设这意味着我的终端(在 Mac OS 上)不支持所使用的转义代码,尽管在很多地方都读到了这些含义相同的内容:

27 = 033 = 0x1b = ^[ = \e
Run Code Online (Sandbox Code Playgroud)

在搜索中,我发现了有关检测斜杠转义支持的问题

所选答案嗅探$TERM要检测的值

case $TERM in
  (|color(|?))(([Ekx]|dt|(ai|n)x)term|rxvt|screen*)*)
    PS1=$'\e\]0;$GENERATED_WINDOW_TITLE\a'"$PS1"
esac
Run Code Online (Sandbox Code Playgroud)

但我想知道这有多可靠。

是否有一种标准方法来检查转义码支持(主要针对 Bash),或者该脚本几乎是常规的?

  • 或者,我可以使用什么转义代码来“保证”最广泛的支持?
  • echo 扩展 -e 怎么样?
  • 对于使用或引用控制代码的脚本,在可移植性/可用性/分发方面有哪些一般最佳实践?

对于其他寻找信息的人来说,这也是一本很好的读物。

terminal escape-characters ansi-term

5
推荐指数
1
解决办法
6167
查看次数

Unix read -p 命令导致 bash 错误,我该如何解决?

我正在尝试提示用户发表评论

function comment {
  if [ ! $1 ]
  then
   read -p "enter checkin comment &lt; " COMMENT;     
  else
   export COMMENT="$1"
  fi 

  if [ ! $COMMENT ]
  then
    echo 'no comment!'
  else
    echo "$COMMENT";
  fi  
}
Run Code Online (Sandbox Code Playgroud)

更新 当我在提示中输入多个单词时会发生这种情况,例如,如果我输入“更新”,我不会收到错误消息...但如果我输入多个单词

enter checkin comment >> sun mars venus
Run Code Online (Sandbox Code Playgroud)

然后我得到错误(总是在第二个字上)

-bash: [: mars: binary operator expected
Run Code Online (Sandbox Code Playgroud)

bash prompt

1
推荐指数
1
解决办法
896
查看次数