特定の種類のファイルとその内部サブディレクトリをコピーしたいと思います。 abc_folderにファイルをコピーした後、zzz.txtファイルのコピーが機能しているようです。この問題をどのように解決できますか?
AAA
---aaa.txt
---bbb.txt
---zzz.txt
---abc_folder
---aaa.txt
---bbb.txt
---ccc.txt
希望の出力
AAA
---aaa.txt
---bbb.txt
---zzz.txt
---1.txt
---2.txt
---3.txt
---abc_folder
---aaa.txt
---bbb.txt
---ccc.txt
---1.txt
---2.txt
---3.txt
私のコードの出力
AAA
---aaa.txt
---bbb.txt
---zzz.txt
---1.txt
---2.txt
---4.txt
---abc_folder
---aaa.txt
---bbb.txt
---ccc.txt
---1.txt
---2.txt
---3.txt
私のコード
#!/bin/bash
function traverse() {
counter=1
for file in "$2"/*
do
if [ ! -d "${file}" ]; then
if [[ $file == $3 ]]; then
extension="${file##*.}"
filename="${file%.*}"
cp "$file" "${2}/${counter}.${extension}"
counter=$(($counter + 1))
fi
elif [ $1 == "-R" ] ; then
traverse "${1}" "${file}" "${3}"
fi
done
}
traverse "$1" "$PWD" "$2"
答え1
そしてzsh
:
#! /bin/zsh -
autoload zmv
incr='++count[$1]'
typeset -A count
zmv -n '(**/)(*)(.txt)' '$1$((incr))$3'
-n
(満足すれば削除)
アイデアは、キーが計算のためのディレクトリである連想配列を使用することです。
中間incr
変数が必要です。それ以外の場合、containでは機能しません]
。