我有一种文件夹(A,B,C,D,E,F,G,H),并且每个文件夹中都有一个文件,在所有文件夹中都具有相同的名称(file.txt),但是该文件的大小文件夹与文件夹不同。我想将此文件从每个文件夹复制到新文件夹(X),并为该文件提供与原始文件夹相同的名称。我使用了这个bach脚本来复制文件:
#!/bin/bash
insub_FIM_M_1=path to a parent folder conatin all the folders (A,B,C,D,E,F,G,H)
for i in $(cat $insub_FIM_M_1/FIM_1.txt); do
cp insub_FIM_M_1/${i} <path to the new folder X >
done
在此代码中,所有文件都将被写在新文件夹(X)中,因为它们在文件夹中具有相同的名称。我该如何修改此代码以将文件夹名称添加到文件名称,以便可以知道文件的来源。
假设您的子目录位于其中,$insub_FIM_M_1
并且要复制的文件file.txt
在每个这些子目录中都被调用,则
mkdir -p result || exit 1
for pathname in "$insub_FIM_M_1"/*/file.txt; do
cp "$pathname" "result/$( basename "$( dirname "$pathname" )" )_file.txt"
done
会将这些文件复制到当前result
目录中的目录中,同时根据它们所在的目录重命名每个文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句