如何在Bash中将所有的txt文件转换成myfile.txt。

huangapple go评论55阅读模式
英文:

Bash how to find turn all txt files into myfile.txt

问题

我有这些文件。

文件夹1
    文件1.txt
    文件夹11
       文件2.txt


文件夹2
    文件3.txt
    文件夹22
       文件er.txt

我想将所有的 *txt 文件转换成同名文件:myfile.txt,即,

文件夹1
    myfile.txt
    文件夹11
       myfile.txt

文件夹2
    myfile.txt
    文件夹22
       myfile.txt

我尝试过:

find . -type f -name '*.txt' -exec mv {} myfile.txt \;

但它会删除txt文件...

英文:

I have these files.

folder1
    file1.txt
    folder11
       fil2.txt


folder2
    file3.txt
    folder22
       filer.txt

And I want to transorm all *txt files into the same named file: myfile.txt, i.e,

folder1
    myfile.txt
    folder11
       myfile.txt

folder2
    myfile.txt
    folder22
       myfile.txt

I have tried:

find . -type f -name '*.txt' -exec mv {} myfile.txt \;

But it remove the txt files...

答案1

得分: 0

find -exec 在当前目录中运行指定的命令。这意味着你的 mv 命令会将所有文件移动到你运行 find 命令的目录,而不是在原地重命名它们。

你可以改用 find -execdir,它会在匹配文件所在的目录中执行命令。

# 临时将 PATH 设置为不包含 '.' 的值
PATH=/bin find . -type f -name '*.txt' -execdir mv {} myfile.txt \;

效率较低但对于更复杂的命令可能有用,你也可以使用 -exec 与一个 shell 命令。请注意,在这个示例中,我们将找到的文件作为参数传递给脚本,而不是通过在命令字符串中使用 {} 插入它们。

find . -type f -name '*.txt' -exec /bin/bash -c 'mv "" "${1%/*}/myfile.txt"' _ {} \;
英文:

find -exec runs the specified command in the current directory. That means your mv command is moving all the files to the directory you run find from, not simply renaming them in-place.

You can use find -execdir instead, which executes commands from the directory of the matched file.

# Temporarily set PATH to a value that doesn't include '.' 
PATH=/bin find . -type f -name '*.txt' -execdir mv {} myfile.txt \;

Less efficient but potentially useful for more complex commands, you can also use -exec with a shell command. Note that in this example we pass the found files as arguments to the script, rather than injecting them by putting {} into the command string.

find . -type f -name '*.txt' -exec /bin/bash -c 'mv "" "${1%/*}/myfile.txt"' _ {} \;

huangapple
  • 本文由 发表于 2023年6月29日 02:48:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/76575935.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定