Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在unix中递归重命名文件_Unix_Rename_Ksh_Mv_Hp Ux - Fatal编程技术网

在unix中递归重命名文件

在unix中递归重命名文件,unix,rename,ksh,mv,hp-ux,Unix,Rename,Ksh,Mv,Hp Ux,我知道这将被标记为一个重复的,但我尝试搜索谷歌,我正在尝试的是不适合我 我在一个目录中有一些.txt文件,我需要递归地将所有*.txt文件重命名为*\u XYZ.txt。XYZ在变量X中定义 我尝试了以下代码: file=`find ./ -type f -name "*.txt"|sed "s,^./,,g" |awk -F '.' '{print $1}'` for i in "$file" do mv "$i" "$i_${X}.txt" done 任何帮助都将不胜感激。 谢谢。您的脚

我知道这将被标记为一个重复的,但我尝试搜索谷歌,我正在尝试的是不适合我

我在一个目录中有一些
.txt
文件,我需要递归地将所有
*.txt
文件重命名为
*\u XYZ.txt
。XYZ在变量
X
中定义

我尝试了以下代码:

file=`find ./ -type f -name "*.txt"|sed "s,^./,,g" |awk -F '.' '{print $1}'`

for i in "$file"
do
mv "$i" "$i_${X}.txt"
done
任何帮助都将不胜感激。
谢谢。

您的脚本将销毁变量
文件中的原始文件名,这就是它无法重命名文件的原因

工作示例:

X="_XYZ"
for f in $(find . -type f ! -name "*$X.txt" -name "*.txt"); do 
    mv "$f" "${f%.txt}$X.txt"
done
输出:

$ X="_XYZ"
$ find . -type f -name "*.txt"
./c_XYZ.txt
./aa/c.txt
./a.txt
./b.txt
$ for f in $(find . -type f ! -name "*$X.txt" -name "*.txt"); do mv "$f" "${f%.txt}$X.txt"; done
$ find . -type f -name "*.txt"
./b_XYZ.txt
./c_XYZ.txt
./aa/c_XYZ.txt
./a_XYZ.txt

谢谢@Maxim:-),它成功了。我刚才在
mv
部分搞砸了。请您详细说明一下命令好吗。@User123
${f%.txt}
从变量
f
中删除尾部
.txt
。有关更多详细信息,请参阅。